summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-12-30 14:26:19 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-12-30 14:26:19 +0200
commitd075df56d3cfb15a5d11550d86229f5b8001fbe7 (patch)
tree7ba075db3f2d4f624e818331e3a1085361dd0cbd /app/models
parentf45345edb33f1129aabb58976ae2e6812387eb7d (diff)
downloadgitlab-ce-d075df56d3cfb15a5d11550d86229f5b8001fbe7.tar.gz
Improve perfomance of removeing group
Diffstat (limited to 'app/models')
-rw-r--r--app/models/group.rb4
-rw-r--r--app/models/users_project.rb19
2 files changed, 23 insertions, 0 deletions
diff --git a/app/models/group.rb b/app/models/group.rb
index f16c70a6864..8ba92980a9b 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -29,4 +29,8 @@ class Group < Namespace
def human_name
name
end
+
+ def truncate_teams
+ UsersProject.truncate_teams(project_ids)
+ end
end
diff --git a/app/models/users_project.rb b/app/models/users_project.rb
index 23b83f5203d..b8aacb32953 100644
--- a/app/models/users_project.rb
+++ b/app/models/users_project.rb
@@ -56,6 +56,25 @@ class UsersProject < ActiveRecord::Base
false
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)
source_team = source_project.users_projects.all
target_team = target_project.users_projects.all