mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-12-11 06:35:58 +08:00
Add ned column types to team export/import
This commit is contained in:
parent
3bd44dc5ab
commit
10b7aad732
2 changed files with 85 additions and 21 deletions
|
|
@ -140,14 +140,17 @@ module ModelExporters
|
||||||
{
|
{
|
||||||
repository_cell: cell,
|
repository_cell: cell,
|
||||||
repository_value: cell.value,
|
repository_value: cell.value,
|
||||||
repository_value_asset: get_cell_value_asset(cell)
|
repository_value_asset: get_cell_value_asset(cell),
|
||||||
|
repository_value_checklist: get_cell_value_checklist(cell)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def repository_column(column)
|
def repository_column(column)
|
||||||
{
|
{
|
||||||
repository_column: column,
|
repository_column: column,
|
||||||
repository_list_items: column.repository_list_items
|
repository_list_items: column.repository_list_items,
|
||||||
|
repository_checklist_items: column.repository_checklist_items,
|
||||||
|
repository_status_items: column.repository_status_items
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -167,5 +170,11 @@ module ModelExporters
|
||||||
asset_blob: cell.value.asset.blob
|
asset_blob: cell.value.asset.blob
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_cell_value_checklist(cell)
|
||||||
|
return unless cell.value_type == 'RepositoryChecklistValue'
|
||||||
|
|
||||||
|
cell.value.repository_cell_values_checklist_items
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ class TeamImporter
|
||||||
@result_text_mappings = {}
|
@result_text_mappings = {}
|
||||||
@repository_row_mappings = {}
|
@repository_row_mappings = {}
|
||||||
@repository_list_item_mappings = {}
|
@repository_list_item_mappings = {}
|
||||||
|
@repository_checklist_item_mappings = {}
|
||||||
|
@repository_status_item_mappings = {}
|
||||||
@result_mappings = {}
|
@result_mappings = {}
|
||||||
@checklist_mappings = {}
|
@checklist_mappings = {}
|
||||||
@table_mappings = {}
|
@table_mappings = {}
|
||||||
|
|
@ -161,7 +163,7 @@ class TeamImporter
|
||||||
@is_template = true
|
@is_template = true
|
||||||
|
|
||||||
# Parse the experiment file and save it to DB
|
# Parse the experiment file and save it to DB
|
||||||
project = Project.find_by_id(project_id)
|
project = Project.find_by(id: project_id)
|
||||||
experiment_json = JSON.parse(File.read("#{@import_dir}/experiment.json"))
|
experiment_json = JSON.parse(File.read("#{@import_dir}/experiment.json"))
|
||||||
|
|
||||||
# Handle situation when experiment with same name already exists
|
# Handle situation when experiment with same name already exists
|
||||||
|
|
@ -215,7 +217,7 @@ class TeamImporter
|
||||||
team.repositories.each do |rep|
|
team.repositories.each do |rep|
|
||||||
rep.repository_rows.find_each do |row|
|
rep.repository_rows.find_each do |row|
|
||||||
row.repository_cells.each do |cell|
|
row.repository_cells.each do |cell|
|
||||||
cell.value.save! if update_annotation(cell.value.data)
|
cell.value.save! if update_annotation(cell.value.formatted)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -316,7 +318,7 @@ class TeamImporter
|
||||||
activity.subject_id = mappings[activity.subject_id]
|
activity.subject_id = mappings[activity.subject_id]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
unless activity.values['message_items'].blank?
|
if activity.values['message_items'].present?
|
||||||
activity.values['message_items'].each_value do |item|
|
activity.values['message_items'].each_value do |item|
|
||||||
next unless item['type']
|
next unless item['type']
|
||||||
|
|
||||||
|
|
@ -350,7 +352,7 @@ class TeamImporter
|
||||||
tiny_mce_asset.save!
|
tiny_mce_asset.save!
|
||||||
tiny_mce_asset.image.attach(io: tiny_mce_file, filename: File.basename(tiny_mce_file))
|
tiny_mce_asset.image.attach(io: tiny_mce_file, filename: File.basename(tiny_mce_file))
|
||||||
@mce_asset_counter += 1
|
@mce_asset_counter += 1
|
||||||
next unless tiny_mce_asset.object_id.present?
|
next if tiny_mce_asset.object_id.blank?
|
||||||
|
|
||||||
object = tiny_mce_asset.object
|
object = tiny_mce_asset.object
|
||||||
object_field = Extends::RICH_TEXT_FIELD_MAPPINGS[object.class.name]
|
object_field = Extends::RICH_TEXT_FIELD_MAPPINGS[object.class.name]
|
||||||
|
|
@ -433,18 +435,46 @@ class TeamImporter
|
||||||
find_user(repository_column.created_by_id)
|
find_user(repository_column.created_by_id)
|
||||||
repository_column.save!
|
repository_column.save!
|
||||||
@repository_column_mappings[orig_rep_col_id] = repository_column.id
|
@repository_column_mappings[orig_rep_col_id] = repository_column.id
|
||||||
next unless repository_column.data_type == 'RepositoryListValue'
|
case repository_column.data_type
|
||||||
|
when 'RepositoryListValue'
|
||||||
repository_column_json['repository_list_items'].each do |list_item|
|
repository_column_json['repository_list_items'].each do |list_item|
|
||||||
created_by_id = find_user(repository_column.created_by_id)
|
created_by_id = find_user(repository_column.created_by_id)
|
||||||
repository_list_item = RepositoryListItem.new(data: list_item['data'])
|
repository_list_item = RepositoryListItem.new(data: list_item['data'])
|
||||||
repository_list_item.repository_column = repository_column
|
repository_list_item.repository_column = repository_column
|
||||||
repository_list_item.repository = repository
|
repository_list_item.repository = repository
|
||||||
repository_list_item.created_by_id = created_by_id
|
repository_list_item.created_by_id = created_by_id
|
||||||
repository_list_item.last_modified_by_id = created_by_id
|
repository_list_item.last_modified_by_id = created_by_id
|
||||||
repository_list_item.save!
|
repository_list_item.save!
|
||||||
@repository_list_item_mappings[list_item['id']] =
|
@repository_list_item_mappings[list_item['id']] =
|
||||||
repository_list_item.id
|
repository_list_item.id
|
||||||
|
end
|
||||||
|
when 'RepositoryChecklistValue'
|
||||||
|
repository_column_json['repository_checklist_items'].each do |checklist_item|
|
||||||
|
created_by_id = find_user(repository_column.created_by_id)
|
||||||
|
repository_checklist_item = RepositoryChecklistItem.new(data: checklist_item['data'])
|
||||||
|
repository_checklist_item.repository_column = repository_column
|
||||||
|
repository_checklist_item.repository = repository
|
||||||
|
repository_checklist_item.created_by_id = created_by_id
|
||||||
|
repository_checklist_item.last_modified_by_id = created_by_id
|
||||||
|
repository_checklist_item.save!
|
||||||
|
@repository_checklist_item_mappings[checklist_item['id']] =
|
||||||
|
repository_checklist_item.id
|
||||||
|
end
|
||||||
|
when 'RepositoryStatusValue'
|
||||||
|
repository_column_json['repository_status_items'].each do |status_item|
|
||||||
|
created_by_id = find_user(repository_column.created_by_id)
|
||||||
|
repository_status_item = RepositoryStatusItem.new(
|
||||||
|
status: status_item['status'],
|
||||||
|
icon: status_item['icon']
|
||||||
|
)
|
||||||
|
repository_status_item.repository_column = repository_column
|
||||||
|
repository_status_item.repository = repository
|
||||||
|
repository_status_item.created_by_id = created_by_id
|
||||||
|
repository_status_item.last_modified_by_id = created_by_id
|
||||||
|
repository_status_item.save!
|
||||||
|
@repository_status_item_mappings[status_item['id']] =
|
||||||
|
repository_status_item.id
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
create_repository_rows(repository_json['repository_rows'], repository)
|
create_repository_rows(repository_json['repository_rows'], repository)
|
||||||
|
|
@ -900,7 +930,7 @@ class TeamImporter
|
||||||
report_el_parent_mappings[report_element.id] = orig_parent_id
|
report_el_parent_mappings[report_element.id] = orig_parent_id
|
||||||
end
|
end
|
||||||
report_el_parent_mappings.each do |k, v|
|
report_el_parent_mappings.each do |k, v|
|
||||||
re = ReportElement.find_by_id(k)
|
re = ReportElement.find_by(id: k)
|
||||||
re.parent_id = report_element_mappings[v]
|
re.parent_id = report_element_mappings[v]
|
||||||
re.save!
|
re.save!
|
||||||
end
|
end
|
||||||
|
|
@ -917,6 +947,14 @@ class TeamImporter
|
||||||
@repository_list_item_mappings[list_item_id]
|
@repository_list_item_mappings[list_item_id]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def find_checklist_item_id(checklist_item_id)
|
||||||
|
@repository_checklist_item_mappings[checklist_item_id]
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_status_item_id(status_item_id)
|
||||||
|
@repository_status_item_mappings[status_item_id]
|
||||||
|
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
|
||||||
|
|
@ -925,17 +963,34 @@ class TeamImporter
|
||||||
repository_value = RepositoryListValue.new(
|
repository_value = RepositoryListValue.new(
|
||||||
repository_list_item_id: list_item_id.to_i
|
repository_list_item_id: list_item_id.to_i
|
||||||
)
|
)
|
||||||
when 'RepositoryTextValue'
|
|
||||||
repository_value = RepositoryTextValue.new(cell_json)
|
|
||||||
when 'RepositoryAssetValue'
|
when 'RepositoryAssetValue'
|
||||||
asset = create_asset(value_json['repository_value_asset'], team)
|
asset = create_asset(value_json['repository_value_asset'], team)
|
||||||
repository_value = RepositoryAssetValue.new(asset: asset)
|
repository_value = RepositoryAssetValue.new(asset: asset)
|
||||||
|
when 'RepositoryChecklistValue'
|
||||||
|
repository_value = RepositoryChecklistValue.new(cell_json)
|
||||||
|
when 'RepositoryStatusValue'
|
||||||
|
list_item_id = find_status_item_id(cell_json['repository_status_item_id'])
|
||||||
|
repository_value = RepositoryStatusValue.new(
|
||||||
|
repository_status_item_id: list_item_id.to_i
|
||||||
|
)
|
||||||
|
else
|
||||||
|
value_type = repository_cell.repository_column.data_type
|
||||||
|
repository_value = value_type.constantize.new(cell_json)
|
||||||
end
|
end
|
||||||
repository_value.id = nil
|
repository_value.id = nil
|
||||||
repository_value.created_by_id = find_user(cell_json['created_by_id'])
|
repository_value.created_by_id = find_user(cell_json['created_by_id'])
|
||||||
repository_value.last_modified_by_id =
|
repository_value.last_modified_by_id =
|
||||||
find_user(cell_json['last_modified_by_id'])
|
find_user(cell_json['last_modified_by_id'])
|
||||||
repository_value.repository_cell = repository_cell
|
repository_value.repository_cell = repository_cell
|
||||||
|
repository_cell.value = repository_value
|
||||||
repository_value.save!
|
repository_value.save!
|
||||||
|
|
||||||
|
if repository_cell.value_type == 'RepositoryChecklistValue'
|
||||||
|
value_json['repository_value_checklist'].each do |item|
|
||||||
|
item_id = find_checklist_item_id(item['repository_checklist_item_id']).to_i
|
||||||
|
RepositoryCellValuesChecklistItem.create!(repository_checklist_value: repository_value,
|
||||||
|
repository_checklist_item_id: item_id)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue