diff --git a/app/controllers/experiments_controller.rb b/app/controllers/experiments_controller.rb
index f181505da..30d8d8d0b 100644
--- a/app/controllers/experiments_controller.rb
+++ b/app/controllers/experiments_controller.rb
@@ -39,6 +39,16 @@ class ExperimentsController < ApplicationController
@experiment.last_modified_by = current_user
@experiment.project = @project
if @experiment.save
+ Activity.create(
+ type_of: :create_experiment,
+ project: @experiment.project,
+ user: current_user,
+ message: I18n.t(
+ 'activities.create_experiment',
+ user: current_user.full_name,
+ experiment: @experiment.name
+ )
+ )
flash[:success] = t('experiments.create.success_flash',
experiment: @experiment.name)
respond_to do |format|
@@ -76,6 +86,16 @@ class ExperimentsController < ApplicationController
@experiment.update_attributes(experiment_params)
@experiment.last_modified_by = current_user
if @experiment.save
+ Activity.create(
+ type_of: :edit_experiment,
+ project: @experiment.project,
+ user: current_user,
+ message: I18n.t(
+ 'activities.edit_experiment',
+ user: current_user.full_name,
+ experiment: @experiment.name
+ )
+ )
@experiment.touch(:workflowimg_updated_at)
flash[:success] = t('experiments.update.success_flash',
experiment: @experiment.name)
@@ -106,6 +126,16 @@ class ExperimentsController < ApplicationController
@experiment.archived_by = current_user
@experiment.archived_on = DateTime.now
if @experiment.save
+ Activity.create(
+ type_of: :archive_experiment,
+ project: @experiment.project,
+ user: current_user,
+ message: I18n.t(
+ 'activities.archive_experiment',
+ user: current_user.full_name,
+ experiment: @experiment.name
+ )
+ )
flash[:success] = t('experiments.archive.success_flash',
experiment: @experiment.name)
diff --git a/app/controllers/my_modules_controller.rb b/app/controllers/my_modules_controller.rb
index 0fdd0b23d..d75b622c4 100644
--- a/app/controllers/my_modules_controller.rb
+++ b/app/controllers/my_modules_controller.rb
@@ -271,9 +271,26 @@ class MyModulesController < ApplicationController
end
end
+ task_names = []
+ new_samples = []
@my_module.get_downstream_modules.each do |my_module|
new_samples = samples.select { |el| my_module.samples.exclude?(el) }
my_module.samples.push(*new_samples)
+ task_names << my_module.name
+ end
+ if new_samples.any?
+ Activity.create(
+ type_of: :assign_sample,
+ project: @my_module.experiment.project,
+ my_module: @my_module,
+ user: current_user,
+ message: I18n.t(
+ 'activities.assign_sample',
+ user: current_user.full_name,
+ tasks: task_names.join(', '),
+ samples: new_samples.map(&:name).join(', ')
+ )
+ )
end
end
redirect_to samples_my_module_path(@my_module)
@@ -288,14 +305,30 @@ class MyModulesController < ApplicationController
sample.last_modified_by = current_user
sample.save
- if sample
+ if sample && @my_module.samples.include?(sample)
samples << sample
end
end
+ task_names = []
@my_module.get_downstream_modules.each do |my_module|
+ task_names << my_module.name
my_module.samples.destroy(samples & my_module.samples)
end
+ if samples.any?
+ Activity.create(
+ type_of: :unassign_sample,
+ project: @my_module.experiment.project,
+ my_module: @my_module,
+ user: current_user,
+ message: I18n.t(
+ 'activities.unassign_sample',
+ user: current_user.full_name,
+ tasks: task_names.join(', '),
+ samples: samples.map(&:name).join(', ')
+ )
+ )
+ end
end
redirect_to samples_my_module_path(@my_module)
end
diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb
index 93cccf17c..7778d5c08 100644
--- a/app/controllers/protocols_controller.rb
+++ b/app/controllers/protocols_controller.rb
@@ -364,7 +364,18 @@ class ProtocolsController < ApplicationController
status: :bad_request
}
else
- # Everything good, display flash & render 200
+ # Everything good, record activity, display flash & render 200
+ Activity.create(
+ type_of: :revert_protocol,
+ project: @protocol.my_module.experiment.project,
+ my_module: @protocol.my_module,
+ user: current_user,
+ message: I18n.t(
+ 'activities.revert_protocol',
+ user: current_user.full_name,
+ protocol: @protocol.name
+ )
+ )
flash[:success] = t(
"my_modules.protocols.update_parent_flash",
)
@@ -426,7 +437,18 @@ class ProtocolsController < ApplicationController
status: :bad_request
}
else
- # Everything good, display flash & render 200
+ # Everything good, record activity, display flash & render 200
+ Activity.create(
+ type_of: :load_protocol_from_repository,
+ project: @protocol.my_module.experiment.project,
+ my_module: @protocol.my_module,
+ user: current_user,
+ message: I18n.t(
+ 'activities.load_protocol_from_repository',
+ user: current_user.full_name,
+ protocol: @source.name
+ )
+ )
flash[:success] = t(
"my_modules.protocols.load_from_repository_flash",
)
@@ -454,7 +476,18 @@ class ProtocolsController < ApplicationController
render json: { status: :error }, status: :bad_request
}
else
- # Everything good, display flash & render 200
+ # Everything good, record activity, display flash & render 200
+ Activity.create(
+ type_of: :load_protocol_from_file,
+ project: @protocol.my_module.experiment.project,
+ my_module: @protocol.my_module,
+ user: current_user,
+ message: I18n.t(
+ 'activities.load_protocol_from_file',
+ user: current_user.full_name,
+ protocol: @protocol_json[:name]
+ )
+ )
flash[:success] = t(
"my_modules.protocols.load_from_file_flash",
)
diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb
index cdfaf700f..52a8b8569 100644
--- a/app/controllers/reports_controller.rb
+++ b/app/controllers/reports_controller.rb
@@ -84,6 +84,17 @@ class ReportsController < ApplicationController
@report.last_modified_by = current_user
if continue and @report.save_with_contents(report_contents)
+ # record an activity
+ Activity.create(
+ type_of: :create_report,
+ project: @report.project,
+ user: current_user,
+ message: I18n.t(
+ 'activities.create_report',
+ user: current_user.full_name,
+ report: @report.name
+ )
+ )
respond_to do |format|
format.json {
render json: { url: project_reports_path(@project) }, status: :ok
@@ -119,6 +130,17 @@ class ReportsController < ApplicationController
@report.assign_attributes(report_params)
if continue and @report.save_with_contents(report_contents)
+ # record an activity
+ Activity.create(
+ type_of: :edit_report,
+ project: @report.project,
+ user: current_user,
+ message: I18n.t(
+ 'activities.edit_report',
+ user: current_user.full_name,
+ report: @report.name
+ )
+ )
respond_to do |format|
format.json {
render json: { url: project_reports_path(@project) }, status: :ok
@@ -149,6 +171,17 @@ class ReportsController < ApplicationController
report = Report.find_by_id(report_id)
if report.present?
+ # record an activity
+ Activity.create(
+ type_of: :delete_report,
+ project: report.project,
+ user: current_user,
+ message: I18n.t(
+ 'activities.delete_report',
+ user: current_user.full_name,
+ report: report.name
+ )
+ )
report.destroy
end
end
diff --git a/app/models/activity.rb b/app/models/activity.rb
index 9d00b9453..57967d082 100644
--- a/app/models/activity.rb
+++ b/app/models/activity.rb
@@ -29,6 +29,9 @@ class Activity < ActiveRecord::Base
:add_comment_to_result,
:archive_result,
:edit_result,
+ :create_experiment,
+ :edit_experiment,
+ :archive_experiment,
:clone_experiment,
:move_experiment,
:add_comment_to_project,
@@ -41,7 +44,15 @@ class Activity < ActiveRecord::Base
:delete_step_comment,
:edit_result_comment,
:delete_result_comment,
- :destroy_result
+ :destroy_result,
+ :load_protocol_from_file,
+ :load_protocol_from_repository,
+ :revert_protocol,
+ :create_report,
+ :delete_report,
+ :edit_report,
+ :assign_sample,
+ :unassign_sample
]
validates :type_of, presence: true
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 4d49ceab0..a6488e58d 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1038,7 +1038,10 @@ en:
edit_asset_result: "%{user} edited file result %{result}."
edit_text_result: "%{user} edited text result %{result}."
edit_table_result: "%{user} edited table result %{result}."
- clone_experiment: "%{user} cloned %{experiment_new} from %{experiment_original}."
+ archive_experiment: "%{user} archived experiment %{experiment}."
+ create_experiment: "%{user} created experiment %{experiment}."
+ edit_experiment: "%{user} edited experiment %{experiment}."
+ clone_experiment: "%{user} cloned experiment %{experiment_new} from %{experiment_original}."
move_experiment: "%{user} moved experiment %{experiment} from project %{project_original} to project %{project_new}."
add_comment_to_project: "%{user} commented on project %{project}."
edit_project_comment: "%{user} edited comment on project %{project}."
@@ -1050,6 +1053,14 @@ en:
delete_step_comment: "%{user} deleted comment on Step %{step} %{step_name}."
edit_result_comment: "%{user} edited comment on result %{result}."
delete_result_comment: "%{user} deleted comment on result %{result}."
+ load_protocol_from_file: "%{user} loaded protocol %{protocol} from file."
+ load_protocol_from_repository: "%{user} loaded protocol %{protocol} from repository."
+ revert_protocol: "%{user} reverted protocol %{protocol} from repository."
+ create_report: "%{user} created report %{report}."
+ delete_report: "%{user} deleted report %{report}."
+ edit_report: "%{user} edited report %{report}."
+ assign_sample: "%{user} assigned sample(s) %{samples} to task(s) %{tasks}."
+ unassign_sample: "%{user} unassigned sample(s) %{samples} from task(s) %{tasks}."
user_my_modules:
new: