| ... | ... | @@ -21,6 +21,35 @@ class UsersProject < ActiveRecord::Base |
|
|
|
delegate :name, :email, to: :user, prefix: true
|
|
|
|
|
|
|
|
class << self
|
|
|
|
def import_team(source_project, target_project)
|
|
|
|
UsersProject.without_repository_callback do
|
|
|
|
UsersProject.transaction do
|
|
|
|
team = source_project.users_projects.all
|
|
|
|
|
|
|
|
team.each do |tm|
|
|
|
|
# Skip if user already present in team
|
|
|
|
next if target_project.users.include?(tm.user)
|
|
|
|
|
|
|
|
new_tm = tm.dup
|
|
|
|
new_tm.id = nil
|
|
|
|
new_tm.project_id = target_project.id
|
|
|
|
new_tm.save
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
target_project.update_repository
|
|
|
|
true
|
|
|
|
rescue
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
def without_repository_callback
|
|
|
|
UsersProject.skip_callback(:destroy, :after, :update_repository)
|
|
|
|
yield
|
|
|
|
UsersProject.set_callback(:destroy, :after, :update_repository)
|
|
|
|
end
|
|
|
|
|
|
|
|
def bulk_delete(project, user_ids)
|
|
|
|
UsersProject.transaction do
|
|
|
|
UsersProject.where(:user_id => user_ids, :project_id => project.id).each do |users_project|
|
| ... | ... | |
| ... | ... | |