diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2017-04-06 17:52:15 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2017-04-10 21:28:41 +0300 |
commit | e585b77730b2a38173453bb5e437628fe6eb9844 (patch) | |
tree | dc17cbc02181b3fe8d987ba79226d05a4d4d650c | |
parent | 0b5a8a34e0b7851957b976a8151a7d6acf8b9f69 (diff) | |
download | gitlab-ce-e585b77730b2a38173453bb5e437628fe6eb9844.tar.gz |
Change project view default for existing users and anonymous visitors to files+readmedz-fix-project-view
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r-- | app/controllers/projects_controller.rb | 10 | ||||
-rw-r--r-- | app/helpers/preferences_helper.rb | 6 | ||||
-rw-r--r-- | changelogs/unreleased/dz-fix-project-view.yml | 4 | ||||
-rw-r--r-- | db/post_migrate/20170406142253_migrate_user_project_view.rb | 19 | ||||
-rw-r--r-- | spec/helpers/preferences_helper_spec.rb | 4 | ||||
-rw-r--r-- | spec/migrations/migrate_user_project_view_spec.rb | 17 |
6 files changed, 56 insertions, 4 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 47f7e0b1b28..6807c37f972 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -345,7 +345,11 @@ class ProjectsController < Projects::ApplicationController end def project_view_files? - current_user && current_user.project_view == 'files' + if current_user + current_user.project_view == 'files' + else + project_view_files_allowed? + end end # Override extract_ref from ExtractsPath, which returns the branch and file path @@ -359,4 +363,8 @@ class ProjectsController < Projects::ApplicationController def get_id project.repository.root_ref end + + def project_view_files_allowed? + !project.empty_repo? && can?(current_user, :download_code, project) + end end diff --git a/app/helpers/preferences_helper.rb b/app/helpers/preferences_helper.rb index 243ef39ef61..de959f13713 100644 --- a/app/helpers/preferences_helper.rb +++ b/app/helpers/preferences_helper.rb @@ -63,6 +63,10 @@ module PreferencesHelper end def anonymous_project_view - @project.empty_repo? || !can?(current_user, :download_code, @project) ? 'activity' : 'readme' + if !@project.empty_repo? && can?(current_user, :download_code, @project) + 'files' + else + 'activity' + end end end diff --git a/changelogs/unreleased/dz-fix-project-view.yml b/changelogs/unreleased/dz-fix-project-view.yml new file mode 100644 index 00000000000..647a1c96bd9 --- /dev/null +++ b/changelogs/unreleased/dz-fix-project-view.yml @@ -0,0 +1,4 @@ +--- +title: Change project view default for existing users and anonymous visitors to files+readme +merge_request: 10498 +author: diff --git a/db/post_migrate/20170406142253_migrate_user_project_view.rb b/db/post_migrate/20170406142253_migrate_user_project_view.rb new file mode 100644 index 00000000000..22f0f2ac200 --- /dev/null +++ b/db/post_migrate/20170406142253_migrate_user_project_view.rb @@ -0,0 +1,19 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class MigrateUserProjectView < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + def up + update_column_in_batches(:users, :project_view, 2) do |table, query| + query.where(table[:project_view].eq(0)) + end + end + + def down + # Nothing can be done to restore old values + end +end diff --git a/spec/helpers/preferences_helper_spec.rb b/spec/helpers/preferences_helper_spec.rb index f3e79cc7290..2c0e9975f73 100644 --- a/spec/helpers/preferences_helper_spec.rb +++ b/spec/helpers/preferences_helper_spec.rb @@ -86,10 +86,10 @@ describe PreferencesHelper do context 'when repository is not empty' do let(:project) { create(:project, :public, :repository) } - it 'returns readme if user has repository access' do + it 'returns files and readme if user has repository access' do allow(helper).to receive(:can?).with(nil, :download_code, project).and_return(true) - expect(helper.default_project_view).to eq('readme') + expect(helper.default_project_view).to eq('files') end it 'returns activity if user does not have repository access' do diff --git a/spec/migrations/migrate_user_project_view_spec.rb b/spec/migrations/migrate_user_project_view_spec.rb new file mode 100644 index 00000000000..dacaa834aa9 --- /dev/null +++ b/spec/migrations/migrate_user_project_view_spec.rb @@ -0,0 +1,17 @@ +# encoding: utf-8 + +require 'spec_helper' +require Rails.root.join('db', 'post_migrate', '20170406142253_migrate_user_project_view.rb') + +describe MigrateUserProjectView do + let(:migration) { described_class.new } + let!(:user) { create(:user, project_view: 'readme') } + + describe '#up' do + it 'updates project view setting with new value' do + migration.up + + expect(user.reload.project_view).to eq('files') + end + end +end |