Exclude projects pending deletion from all results
This commit is contained in:
parent
95c7aa62de
commit
1e7116b34d
|
@ -10,6 +10,7 @@ v 8.7.0 (unreleased)
|
|||
- Fix raw/rendered diff producing different results on merge requests !3450
|
||||
- Add links to CI setup documentation from project settings and builds pages
|
||||
- Handle nil descriptions in Slack issue messages (Stan Hu)
|
||||
- Add default scope to projects to exclude projects pending deletion
|
||||
- Implement 'Groups View' as an option for dashboard preferences !3379 (Elias W.)
|
||||
- Implement 'TODOs View' as an option for dashboard preferences !3379 (Elias W.)
|
||||
- Gracefully handle notes on deleted commits in merge requests (Stan Hu)
|
||||
|
|
|
@ -206,6 +206,8 @@ class Project < ActiveRecord::Base
|
|||
mount_uploader :avatar, AvatarUploader
|
||||
|
||||
# Scopes
|
||||
default_scope { where(pending_delete: false) }
|
||||
|
||||
scope :sorted_by_activity, -> { reorder(last_activity_at: :desc) }
|
||||
scope :sorted_by_stars, -> { reorder('projects.star_count DESC') }
|
||||
scope :sorted_by_names, -> { joins(:namespace).reorder('namespaces.name ASC, projects.name ASC') }
|
||||
|
|
|
@ -95,17 +95,19 @@ class SystemHooksService
|
|||
end
|
||||
|
||||
def project_member_data(model)
|
||||
project = model.project || Project.unscoped.find(model.source_id)
|
||||
|
||||
{
|
||||
project_name: model.project.name,
|
||||
project_path: model.project.path,
|
||||
project_path_with_namespace: model.project.path_with_namespace,
|
||||
project_id: model.project.id,
|
||||
user_username: model.user.username,
|
||||
user_name: model.user.name,
|
||||
user_email: model.user.email,
|
||||
user_id: model.user.id,
|
||||
access_level: model.human_access,
|
||||
project_visibility: Project.visibility_levels.key(model.project.visibility_level_field).downcase
|
||||
project_name: project.name,
|
||||
project_path: project.path,
|
||||
project_path_with_namespace: project.path_with_namespace,
|
||||
project_id: project.id,
|
||||
user_username: model.user.username,
|
||||
user_name: model.user.name,
|
||||
user_email: model.user.email,
|
||||
user_id: model.user.id,
|
||||
access_level: model.human_access,
|
||||
project_visibility: Project.visibility_levels.key(project.visibility_level_field).downcase
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ class ProjectDestroyWorker
|
|||
|
||||
def perform(project_id, user_id, params)
|
||||
begin
|
||||
project = Project.find(project_id)
|
||||
project = Project.unscoped.find(project_id)
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
return
|
||||
end
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
class AddIndexOnPendingDeleteProjects < ActiveRecord::Migration
|
||||
def change
|
||||
add_index :projects, :pending_delete
|
||||
end
|
||||
end
|
||||
|
|
@ -418,7 +418,7 @@ ActiveRecord::Schema.define(version: 20160331133914) do
|
|||
t.integer "iid"
|
||||
t.integer "updated_by_id"
|
||||
t.integer "moved_to_id"
|
||||
t.boolean "confidential", default: false
|
||||
t.boolean "confidential", default: false
|
||||
t.datetime "deleted_at"
|
||||
end
|
||||
|
||||
|
@ -745,6 +745,7 @@ ActiveRecord::Schema.define(version: 20160331133914) do
|
|||
add_index "projects", ["namespace_id"], name: "index_projects_on_namespace_id", using: :btree
|
||||
add_index "projects", ["path"], name: "index_projects_on_path", using: :btree
|
||||
add_index "projects", ["path"], name: "index_projects_on_path_trigram", using: :gin, opclasses: {"path"=>"gin_trgm_ops"}
|
||||
add_index "projects", ["pending_delete"], name: "index_projects_on_pending_delete", using: :btree
|
||||
add_index "projects", ["runners_token"], name: "index_projects_on_runners_token", using: :btree
|
||||
add_index "projects", ["star_count"], name: "index_projects_on_star_count", using: :btree
|
||||
add_index "projects", ["visibility_level"], name: "index_projects_on_visibility_level", using: :btree
|
||||
|
|
|
@ -104,6 +104,15 @@ describe Project, models: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'default_scope' do
|
||||
it 'excludes projects pending deletion from the results' do
|
||||
project = create(:empty_project)
|
||||
create(:empty_project, pending_delete: true)
|
||||
|
||||
expect(Project.all).to eq [project]
|
||||
end
|
||||
end
|
||||
|
||||
describe 'project token' do
|
||||
it 'should set an random token if none provided' do
|
||||
project = FactoryGirl.create :empty_project, runners_token: ''
|
||||
|
|
Loading…
Reference in New Issue