Commit d075df56d3cfb15a5d11550d86229f5b8001fbe7

Authored by Dmitriy Zaporozhets
1 parent f45345ed

Improve perfomance of removeing group

app/controllers/admin/groups_controller.rb
... ... @@ -73,6 +73,8 @@ class Admin::GroupsController < AdminController
73 73 end
74 74  
75 75 def destroy
  76 + @group.truncate_teams
  77 +
76 78 @group.destroy
77 79  
78 80 redirect_to admin_groups_path, notice: 'Group was successfully deleted.'
... ...
app/models/group.rb
... ... @@ -29,4 +29,8 @@ class Group < Namespace
29 29 def human_name
30 30 name
31 31 end
  32 +
  33 + def truncate_teams
  34 + UsersProject.truncate_teams(project_ids)
  35 + end
32 36 end
... ...
app/models/users_project.rb
... ... @@ -56,6 +56,25 @@ class UsersProject < ActiveRecord::Base
56 56 false
57 57 end
58 58  
  59 + def truncate_teams(project_ids)
  60 + UsersProject.transaction do
  61 + users_projects = UsersProject.where(project_id: project_ids)
  62 + users_projects.each do |users_project|
  63 + users_project.skip_git = true
  64 + users_project.destroy
  65 + end
  66 + Gitlab::Gitolite.new.update_repositories(Project.where(id: project_ids))
  67 + end
  68 +
  69 + true
  70 + rescue
  71 + false
  72 + end
  73 +
  74 + def truncate_team project
  75 + truncate_teams [project.id]
  76 + end
  77 +
59 78 def import_team(source_project, target_project)
60 79 source_team = source_project.users_projects.all
61 80 target_team = target_project.users_projects.all
... ...
app/roles/team.rb
... ... @@ -47,7 +47,8 @@ module Team
47 47 UsersProject.bulk_delete(self, users_ids)
48 48 end
49 49  
  50 + # Remove all users from project team
50 51 def truncate_team
51   - UsersProject.bulk_delete(self, self.users.map(&:id))
  52 + UsersProject.truncate_team(self)
52 53 end
53 54 end
... ...