mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-21 07:26:15 +08:00
Merge pull request #4604 from okriuchykhin/ok_SCI_7434
Fix team export/import [SCI-7434]
This commit is contained in:
commit
c8bd5513cf
|
@ -4,7 +4,7 @@ module ModelExporters
|
|||
class TeamExporter < ModelExporter
|
||||
def initialize(team_id)
|
||||
super()
|
||||
@team = Team.includes(:user_teams).find(team_id)
|
||||
@team = Team.find(team_id)
|
||||
end
|
||||
|
||||
def export_to_dir
|
||||
|
@ -42,9 +42,11 @@ module ModelExporters
|
|||
@tiny_mce_assets_to_copy.push(team.tiny_mce_assets) if team.tiny_mce_assets.present?
|
||||
{
|
||||
team: team,
|
||||
default_admin_id: team.user_teams.where(role: 2).first.user.id,
|
||||
default_admin_id: team.user_assignments.where(user_role: UserRole.find_predefined_owner_role).first.user.id,
|
||||
users: team.users.map { |u| user(u) },
|
||||
user_teams: team.user_teams,
|
||||
user_assignments: team.user_assignments.map do |ua|
|
||||
user_assignment(ua)
|
||||
end,
|
||||
notifications: Notification
|
||||
.includes(:user_notifications)
|
||||
.where('user_notifications.user_id': team.users)
|
||||
|
@ -52,7 +54,11 @@ module ModelExporters
|
|||
repositories: team.repositories.map { |r| repository(r) },
|
||||
tiny_mce_assets: team.tiny_mce_assets.map { |tma| tiny_mce_asset_data(tma) },
|
||||
protocols: team.protocols.where(my_module: nil).map do |pr|
|
||||
protocol(pr)
|
||||
protocol(pr).merge(
|
||||
user_assignments: pr.user_assignments.map do |ua|
|
||||
user_assignment(ua)
|
||||
end
|
||||
)
|
||||
end,
|
||||
protocol_keywords: team.protocol_keywords,
|
||||
project_folders: team.project_folders,
|
||||
|
@ -124,13 +130,17 @@ module ModelExporters
|
|||
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
|
||||
assigned: user_assignment.assigned,
|
||||
team_id: user_assignment.team_id
|
||||
}
|
||||
end
|
||||
|
||||
def report(report)
|
||||
{
|
||||
report: report,
|
||||
user_assignments: report.user_assignments.map do |ua|
|
||||
user_assignment(ua)
|
||||
end,
|
||||
report_elements: report.report_elements
|
||||
}
|
||||
end
|
||||
|
@ -146,6 +156,10 @@ module ModelExporters
|
|||
end
|
||||
}
|
||||
unless repository.is_a?(RepositorySnapshot)
|
||||
result[:user_assignments] =
|
||||
repository.user_assignments.where(team: repository.team, user: repository.team.users).map do |ua|
|
||||
user_assignment(ua)
|
||||
end
|
||||
result[:repository_snapshots] = repository.repository_snapshots.map { |r| repository(r) }
|
||||
end
|
||||
result
|
||||
|
|
|
@ -27,6 +27,8 @@ class TeamImporter
|
|||
@checklist_mappings = {}
|
||||
@table_mappings = {}
|
||||
@report_mappings = {}
|
||||
@label_template_mappings = {}
|
||||
@step_text_mappings = {}
|
||||
|
||||
@project_counter = 0
|
||||
@repository_counter = 0
|
||||
|
@ -59,25 +61,18 @@ class TeamImporter
|
|||
team_last_modified_by = team.last_modified_by_id
|
||||
team.last_modified_by_id = nil
|
||||
team.without_templates = true
|
||||
team.skip_user_assignments = true
|
||||
team.save!
|
||||
@team_id = team.id
|
||||
|
||||
create_users(team_json['users'], team)
|
||||
puts 'Assigning users to the team...'
|
||||
create_user_assignments(team_json['user_assignments'], team)
|
||||
|
||||
# Find new id of the first admin in the team
|
||||
@admin_id = @user_mappings[team_json['default_admin_id']]
|
||||
|
||||
create_notifications(team_json['notifications'])
|
||||
|
||||
puts 'Assigning users to the team...'
|
||||
team_json['user_teams'].each do |user_team_json|
|
||||
user_team = UserTeam.new(user_team_json)
|
||||
user_team.id = nil
|
||||
user_team.user_id = find_user(user_team.user_id)
|
||||
user_team.team_id = team.id
|
||||
user_team.assigned_by_id = find_user(user_team.assigned_by_id)
|
||||
user_team.save!
|
||||
end
|
||||
|
||||
create_protocol_keywords(team_json['protocol_keywords'], team)
|
||||
create_protocols(team_json['protocols'], nil, team)
|
||||
create_project_folders(team_json['project_folders'], team)
|
||||
|
@ -316,6 +311,7 @@ class TeamImporter
|
|||
team.label_templates.where.not(type: 'FluicsLabelTemplate').destroy_all
|
||||
label_templates_json.each do |template_json|
|
||||
template = LabelTemplate.new(template_json)
|
||||
orig_template_id = template.id
|
||||
template.id = nil
|
||||
template.team_id = team.id
|
||||
template.created_by_id = find_user(template.created_by_id) if template.created_by_id
|
||||
|
@ -323,6 +319,7 @@ class TeamImporter
|
|||
template.save!
|
||||
|
||||
@label_template_counter += 1
|
||||
@label_template_mappings[orig_template_id] = template.id
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -457,7 +454,11 @@ class TeamImporter
|
|||
repository.archived_by_id = find_user(repository.archived_by_id)
|
||||
repository.restored_by_id = find_user(repository.restored_by_id)
|
||||
repository.discarded_by_id = find_user(repository.discarded_by_id)
|
||||
repository.skip_user_assignments = true
|
||||
repository.save!
|
||||
|
||||
create_user_assignments(repository_json['user_assignments'], repository)
|
||||
|
||||
@repository_mappings[orig_repository_id] = repository.id
|
||||
@repository_counter += 1
|
||||
repository_json['repository_columns'].each do |repository_column_json|
|
||||
|
@ -790,6 +791,9 @@ class TeamImporter
|
|||
protocol.skip_user_assignments = true
|
||||
protocol.parent_id = @protocol_mappings[protocol.parent_id] unless protocol.parent_id.nil?
|
||||
protocol.save!
|
||||
|
||||
create_user_assignments(protocol_json['user_assignments'], protocol) if protocol.in_repository?
|
||||
|
||||
@protocol_counter += 1
|
||||
@protocol_mappings[orig_protocol_id] = protocol.id
|
||||
|
||||
|
@ -832,9 +836,11 @@ class TeamImporter
|
|||
step_json['step_orderable_elements'].each do |element_json|
|
||||
if element_json['step_text']
|
||||
orderable = StepText.new(element_json['step_text'])
|
||||
orig_step_text_id = orderable.id
|
||||
orderable.step_id = step.id
|
||||
orderable.id = nil
|
||||
orderable.save!
|
||||
@step_text_mappings[orig_step_text_id] = orderable.id
|
||||
elsif element_json['table']
|
||||
table = Table.new(element_json['table'])
|
||||
orig_table_id = table.id
|
||||
|
@ -983,7 +989,11 @@ class TeamImporter
|
|||
report.user_id = find_user(report.user_id)
|
||||
report.last_modified_by_id = find_user(report.last_modified_by_id)
|
||||
report.team_id = team.id
|
||||
report.skip_user_assignments = true
|
||||
report.save!
|
||||
|
||||
create_user_assignments(report_json['user_assignments'], report)
|
||||
|
||||
@report_mappings[orig_report_id] = report.id
|
||||
@report_counter += 1
|
||||
report_json['report_elements'].each do |report_element_json|
|
||||
|
@ -1057,6 +1067,7 @@ class TeamImporter
|
|||
user_assignment.user_id = find_user(user_assignment_json['user_id'])
|
||||
user_assignment.assigned = user_assignment_json['assigned']
|
||||
user_assignment.assigned_by_id = find_user(user_assignment_json['assigned_by_id'])
|
||||
user_assignment.team_id = @team_id
|
||||
user_assignment.save!
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue