Commit d075df56 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Improve perfomance of removeing group

parent f45345ed
...@@ -73,6 +73,8 @@ class Admin::GroupsController < AdminController ...@@ -73,6 +73,8 @@ class Admin::GroupsController < AdminController
end end
def destroy def destroy
@group.truncate_teams
@group.destroy @group.destroy
redirect_to admin_groups_path, notice: 'Group was successfully deleted.' redirect_to admin_groups_path, notice: 'Group was successfully deleted.'
......
...@@ -29,4 +29,8 @@ class Group < Namespace ...@@ -29,4 +29,8 @@ class Group < Namespace
def human_name def human_name
name name
end end
def truncate_teams
UsersProject.truncate_teams(project_ids)
end
end end
...@@ -56,6 +56,25 @@ class UsersProject < ActiveRecord::Base ...@@ -56,6 +56,25 @@ class UsersProject < ActiveRecord::Base
false false
end end
def truncate_teams(project_ids)
UsersProject.transaction do
users_projects = UsersProject.where(project_id: project_ids)
users_projects.each do |users_project|
users_project.skip_git = true
users_project.destroy
end
Gitlab::Gitolite.new.update_repositories(Project.where(id: project_ids))
end
true
rescue
false
end
def truncate_team project
truncate_teams [project.id]
end
def import_team(source_project, target_project) def import_team(source_project, target_project)
source_team = source_project.users_projects.all source_team = source_project.users_projects.all
target_team = target_project.users_projects.all target_team = target_project.users_projects.all
......
...@@ -47,7 +47,8 @@ module Team ...@@ -47,7 +47,8 @@ module Team
UsersProject.bulk_delete(self, users_ids) UsersProject.bulk_delete(self, users_ids)
end end
# Remove all users from project team
def truncate_team def truncate_team
UsersProject.bulk_delete(self, self.users.map(&:id)) UsersProject.truncate_team(self)
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment