mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-08 04:47:22 +08:00
Also move activities when moving experiment to another project [SCI-6047] (#3535)
* Also move activities when moving experiment to another project [SCI-6047] * Changed update to update! [SCI-6047]
This commit is contained in:
parent
17a4afc6fa
commit
1bb30b2c49
2 changed files with 33 additions and 14 deletions
|
@ -20,17 +20,8 @@ module Experiments
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
@exp.project = @project
|
@exp.project = @project
|
||||||
|
|
||||||
@exp.my_modules.each do |my_module|
|
move_tags!
|
||||||
new_tags = []
|
move_activities!(@exp)
|
||||||
my_module.tags.each do |tag|
|
|
||||||
new_tag = @project.tags.where.not(id: new_tags).find_by(name: tag.name, color: tag.color)
|
|
||||||
new_tag ||=
|
|
||||||
@project.tags.create!(name: tag.name, color: tag.color, created_by: @user, last_modified_by: @user)
|
|
||||||
new_tags << new_tag
|
|
||||||
end
|
|
||||||
my_module.tags.destroy_all
|
|
||||||
my_module.tags = new_tags
|
|
||||||
end
|
|
||||||
|
|
||||||
@exp.save!
|
@exp.save!
|
||||||
rescue
|
rescue
|
||||||
|
@ -69,6 +60,34 @@ module Experiments
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def move_tags!
|
||||||
|
@exp.my_modules.each do |my_module|
|
||||||
|
new_tags = []
|
||||||
|
my_module.tags.each do |tag|
|
||||||
|
new_tag = @project.tags.where.not(id: new_tags).find_by(name: tag.name, color: tag.color)
|
||||||
|
new_tag ||=
|
||||||
|
@project.tags.create!(name: tag.name, color: tag.color, created_by: @user, last_modified_by: @user)
|
||||||
|
new_tags << new_tag
|
||||||
|
end
|
||||||
|
my_module.tags.destroy_all
|
||||||
|
my_module.tags = new_tags
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# recursively move all activities in child associations to new project
|
||||||
|
def move_activities!(subject)
|
||||||
|
Activity.where(subject: subject).update!(project: @project)
|
||||||
|
|
||||||
|
child_associations = Extends::ACTIVITY_SUBJECT_CHILDREN[subject.class.name.underscore.to_sym]
|
||||||
|
return unless child_associations
|
||||||
|
|
||||||
|
child_associations.each do |child_association|
|
||||||
|
[subject.public_send(child_association)].flatten.each do |child_subject|
|
||||||
|
move_activities!(child_subject)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def track_activity
|
def track_activity
|
||||||
Activities::CreateActivityService
|
Activities::CreateActivityService
|
||||||
.call(activity_type: :move_experiment,
|
.call(activity_type: :move_experiment,
|
||||||
|
|
|
@ -147,10 +147,10 @@ class Extends
|
||||||
report: nil,
|
report: nil,
|
||||||
project: nil,
|
project: nil,
|
||||||
experiment: [:my_modules],
|
experiment: [:my_modules],
|
||||||
my_module: [:results, :protocols],
|
my_module: %i(results protocols),
|
||||||
result: nil,
|
result: [:asset],
|
||||||
protocol: [:steps],
|
protocol: [:steps],
|
||||||
step: nil
|
step: [:assets]
|
||||||
}
|
}
|
||||||
|
|
||||||
ACTIVITY_MESSAGE_ITEMS_TYPES =
|
ACTIVITY_MESSAGE_ITEMS_TYPES =
|
||||||
|
|
Loading…
Add table
Reference in a new issue