From 06577e2f8bbf3bcbf66455c59e91bd2609f76a22 Mon Sep 17 00:00:00 2001 From: aignatov-bio <47317017+aignatov-bio@users.noreply.github.com> Date: Mon, 22 Nov 2021 11:17:39 +0100 Subject: [PATCH] Skip create assignments during team import [SCI-6280] (#3679) Co-authored-by: Anton --- app/models/concerns/assignable.rb | 18 +++++++++++++----- app/models/project.rb | 2 ++ app/services/team_importer.rb | 3 +++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/models/concerns/assignable.rb b/app/models/concerns/assignable.rb index 260e76694..2a0633f76 100644 --- a/app/models/concerns/assignable.rb +++ b/app/models/concerns/assignable.rb @@ -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 diff --git a/app/models/project.rb b/app/models/project.rb index cb39e810e..dbec33376 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -319,6 +319,8 @@ class Project < ApplicationRecord end def auto_assign_project_members + return if skip_user_assignments + UserAssignments::GroupAssignmentJob.perform_now( team, self, diff --git a/app/services/team_importer.rb b/app/services/team_importer.rb index 46d060d85..7bc0a14f6 100644 --- a/app/services/team_importer.rb +++ b/app/services/team_importer.rb @@ -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