mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-12-09 21:56:32 +08:00
Add user roles to team importer/exporter [SCI-6113]
This commit is contained in:
parent
6ea34adb22
commit
b10a6c8b7d
3 changed files with 48 additions and 0 deletions
|
|
@ -44,14 +44,29 @@ module ModelExporters
|
||||||
end
|
end
|
||||||
return {
|
return {
|
||||||
experiment: @experiment,
|
experiment: @experiment,
|
||||||
|
user_assignments: @experiment.user_assignments.map do |ua|
|
||||||
|
user_assignment(ua)
|
||||||
|
end,
|
||||||
my_modules: my_modules.map { |m| my_module(m) },
|
my_modules: my_modules.map { |m| my_module(m) },
|
||||||
my_module_groups: my_module_groups
|
my_module_groups: my_module_groups
|
||||||
}, @assets_to_copy
|
}, @assets_to_copy
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def user_assignment(user_assignment)
|
||||||
|
{
|
||||||
|
user_id: user_assignment.user_id,
|
||||||
|
assigned_by_id: user_assignment.assigned_by_id,
|
||||||
|
role_name: user_assignment.user_role.name,
|
||||||
|
assigned: user_assignment.assigned
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def my_module(my_module)
|
def my_module(my_module)
|
||||||
{
|
{
|
||||||
my_module: my_module,
|
my_module: my_module,
|
||||||
|
user_assignments: my_module.user_assignments.map do |ua|
|
||||||
|
user_assignment(ua)
|
||||||
|
end,
|
||||||
my_module_status_name: my_module.my_module_status&.name,
|
my_module_status_name: my_module.my_module_status&.name,
|
||||||
outputs: my_module.outputs,
|
outputs: my_module.outputs,
|
||||||
my_module_tags: my_module.my_module_tags,
|
my_module_tags: my_module.my_module_tags,
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,9 @@ module ModelExporters
|
||||||
|
|
||||||
{
|
{
|
||||||
project: project,
|
project: project,
|
||||||
|
user_assignments: project.user_assignments.map do |ua|
|
||||||
|
user_assignment(ua)
|
||||||
|
end,
|
||||||
user_projects: project.user_projects,
|
user_projects: project.user_projects,
|
||||||
activities: project.activities,
|
activities: project.activities,
|
||||||
project_comments: project.project_comments,
|
project_comments: project.project_comments,
|
||||||
|
|
@ -107,6 +110,15 @@ module ModelExporters
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def user_assignment(user_assignment)
|
||||||
|
{
|
||||||
|
user_id: user_assignment.user_id,
|
||||||
|
assigned_by_id: user_assignment.assigned_by_id,
|
||||||
|
role_name: user_assignment.user_role.name,
|
||||||
|
assigned: user_assignment.assigned
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def report(report)
|
def report(report)
|
||||||
{
|
{
|
||||||
report: report,
|
report: report,
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ class TeamImporter
|
||||||
Protocol.skip_callback(:save, :after, :update_linked_children)
|
Protocol.skip_callback(:save, :after, :update_linked_children)
|
||||||
Activity.skip_callback(:create, :before, :add_user)
|
Activity.skip_callback(:create, :before, :add_user)
|
||||||
Activity.skip_callback(:initialize, :after, :init_default_values)
|
Activity.skip_callback(:initialize, :after, :init_default_values)
|
||||||
|
@user_roles = UserRole.all
|
||||||
@import_dir = import_dir
|
@import_dir = import_dir
|
||||||
team_json = JSON.parse(File.read("#{@import_dir}/team_export.json"))
|
team_json = JSON.parse(File.read("#{@import_dir}/team_export.json"))
|
||||||
team = Team.new(team_json['team'].slice(*Team.column_names))
|
team = Team.new(team_json['team'].slice(*Team.column_names))
|
||||||
|
|
@ -579,6 +580,8 @@ class TeamImporter
|
||||||
project.save!
|
project.save!
|
||||||
@project_mappings[orig_project_id] = project.id
|
@project_mappings[orig_project_id] = project.id
|
||||||
@project_counter += 1
|
@project_counter += 1
|
||||||
|
puts 'Creating project user_assignments...'
|
||||||
|
create_user_assignments(project_json['user_assignments'], project)
|
||||||
puts 'Creating user_projects...'
|
puts 'Creating user_projects...'
|
||||||
project_json['user_projects'].each do |user_project_json|
|
project_json['user_projects'].each do |user_project_json|
|
||||||
user_project = UserProject.new(user_project_json)
|
user_project = UserProject.new(user_project_json)
|
||||||
|
|
@ -634,6 +637,9 @@ class TeamImporter
|
||||||
experiment.restored_by_id = find_user(experiment.restored_by_id)
|
experiment.restored_by_id = find_user(experiment.restored_by_id)
|
||||||
experiment.save!
|
experiment.save!
|
||||||
@experiment_mappings[orig_experiment_id] = experiment.id
|
@experiment_mappings[orig_experiment_id] = experiment.id
|
||||||
|
|
||||||
|
create_user_assignments(experiment_json['user_assignments'], experiment)
|
||||||
|
|
||||||
experiment_json['my_module_groups'].each do |my_module_group_json|
|
experiment_json['my_module_groups'].each do |my_module_group_json|
|
||||||
my_module_group = MyModuleGroup.new(my_module_group_json)
|
my_module_group = MyModuleGroup.new(my_module_group_json)
|
||||||
orig_module_group_id = my_module_group.id
|
orig_module_group_id = my_module_group.id
|
||||||
|
|
@ -677,6 +683,8 @@ class TeamImporter
|
||||||
@my_module_mappings[orig_my_module_id] = my_module.id
|
@my_module_mappings[orig_my_module_id] = my_module.id
|
||||||
@my_module_counter += 1
|
@my_module_counter += 1
|
||||||
|
|
||||||
|
create_user_assignments(my_module_json['user_assignments'], my_module)
|
||||||
|
|
||||||
unless @is_template
|
unless @is_template
|
||||||
my_module_json['my_module_tags'].each do |my_module_tag_json|
|
my_module_json['my_module_tags'].each do |my_module_tag_json|
|
||||||
my_module_tag = MyModuleTag.new(my_module_tag_json)
|
my_module_tag = MyModuleTag.new(my_module_tag_json)
|
||||||
|
|
@ -998,6 +1006,19 @@ class TeamImporter
|
||||||
@repository_status_item_mappings[status_item_id]
|
@repository_status_item_mappings[status_item_id]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_user_assignments(user_assignments_json, assignable)
|
||||||
|
return if user_assignments_json.blank?
|
||||||
|
|
||||||
|
user_assignments_json.each do |user_assignment_json|
|
||||||
|
user_assignment = UserAssignment.new
|
||||||
|
user_assignment.assignable = assignable
|
||||||
|
user_assignment.user_role = @user_roles.find { |role| role.name == user_assignment_json['role_name'] }
|
||||||
|
user_assignment.user_id = find_user(user_assignment_json['user_id'])
|
||||||
|
user_assignment.assigned_by_id = find_user(user_assignment_json['assigned_by_id'])
|
||||||
|
user_assignment.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def create_cell_value(repository_cell, value_json, team)
|
def create_cell_value(repository_cell, value_json, team)
|
||||||
cell_json = value_json['repository_value']
|
cell_json = value_json['repository_value']
|
||||||
case repository_cell.value_type
|
case repository_cell.value_type
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue