Skip create assignments during team import [SCI-6280] (#3679)

Co-authored-by: Anton <anton@scinote.net>
This commit is contained in:
aignatov-bio 2021-11-22 11:17:39 +01:00 committed by GitHub
parent 21c97027c1
commit 06577e2f8b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 5 deletions

View file

@ -6,6 +6,8 @@ module Assignable
included do
include Canaid::Helpers::PermissionsHelper
attr_accessor :skip_user_assignments
has_many :user_assignments, as: :assignable, dependent: :destroy
default_scope { includes(user_assignments: :user_role).distinct }
@ -28,7 +30,17 @@ module Assignable
.where('? = ANY(user_roles.permissions)', permission)
}
after_create do
after_create :create_users_assignments
def role_for_user(user)
user_assignments.find_by(user: user)&.user_role
end
private
def create_users_assignments
return if skip_user_assignments
role = if self.class == Project
UserRole.find_by(name: I18n.t('user_roles.predefined.owner'))
else
@ -44,9 +56,5 @@ module Assignable
UserAssignments::GenerateUserAssignmentsJob.perform_later(self, created_by)
end
def role_for_user(user)
user_assignments.find_by(user: user)&.user_role
end
end
end

View file

@ -319,6 +319,8 @@ class Project < ApplicationRecord
end
def auto_assign_project_members
return if skip_user_assignments
UserAssignments::GroupAssignmentJob.perform_now(
team,
self,

View file

@ -576,6 +576,7 @@ class TeamImporter
project.last_modified_by_id = find_user(project.last_modified_by_id)
project.archived_by_id = find_user(project.archived_by_id)
project.restored_by_id = find_user(project.restored_by_id)
project.skip_user_assignments = true
project.project_folder_id = @project_folder_mappings[project.project_folder_id]
project.save!
@project_mappings[orig_project_id] = project.id
@ -635,6 +636,7 @@ class TeamImporter
user_id || find_user(experiment.last_modified_by_id)
experiment.archived_by_id = find_user(experiment.archived_by_id)
experiment.restored_by_id = find_user(experiment.restored_by_id)
experiment.skip_user_assignments = true
experiment.save!
@experiment_mappings[orig_experiment_id] = experiment.id
@ -669,6 +671,7 @@ class TeamImporter
my_module.archived_by_id = find_user(my_module.archived_by_id)
my_module.restored_by_id = find_user(my_module.restored_by_id)
my_module.experiment = experiment
my_module.skip_user_assignments = true
# Find matching status from default flow
default_flow = MyModuleStatusFlow.global.first