Merge pull request #8438 from andrej-scinote/aj_SCI_11830

Add activities for new experiment fields [SCI-11830]
This commit is contained in:
andrej-scinote 2025-04-17 12:27:15 +02:00 committed by GitHub
commit b010c7b019
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 78 additions and 12 deletions

View file

@ -97,22 +97,39 @@ class ExperimentsController < ApplicationController
def update
old_text = @experiment.description
old_status = @experiment.status
@experiment.assign_attributes(experiment_params)
@experiment.last_modified_by = current_user
name_changed = @experiment.name_changed?
description_changed = @experiment.description_changed?
start_date_changes = @experiment.changes[:start_on]
due_date_changes = @experiment.changes[:due_date]
if @experiment.save
experiment_annotation_notification(old_text) if old_text
activity_type = if experiment_params[:archived] == 'false'
:restore_experiment
elsif name_changed && !description_changed
:rename_experiment
else
:edit_experiment
end
log_activity(activity_type, @experiment)
if start_date_changes.present?
log_start_date_change_activity(start_date_changes)
elsif due_date_changes.present?
log_due_date_change_activity(due_date_changes)
else
activity_type = if experiment_params[:archived] == 'false'
:restore_experiment
elsif name_changed && !description_changed
:rename_experiment
elsif old_status != @experiment.status
:change_experiment_status
else
:edit_experiment
end
message_items = if activity_type == :change_experiment_status
{ old_status: I18n.t("experiments.table.column.status.#{old_status}"),
status: I18n.t("experiments.table.column.status.#{@experiment.status}") }
end || {}
log_activity(activity_type, @experiment, message_items)
end
render json: { message: t('experiments.update.success_flash', experiment: @experiment.name) }, status: :ok
else
@ -550,14 +567,42 @@ class ExperimentsController < ApplicationController
)
end
def log_activity(type_of, experiment)
def log_start_date_change_activity(start_date_changes)
type_of = if start_date_changes[0].nil? # set start_on
message_items = { start_on: @experiment.start_on }
:set_experiment_start_date
elsif start_date_changes[1].nil? # remove start_on
message_items = { start_on: start_date_changes[0] }
:remove_experiment_start_date
else # change start_on
message_items = { start_on: @experiment.start_on }
:change_experiment_start_date
end
log_activity(type_of, @experiment, message_items)
end
def log_due_date_change_activity(due_date_changes)
type_of = if due_date_changes[0].nil? # set due_date
message_items = { due_date: @experiment.due_date }
:set_experiment_due_date
elsif due_date_changes[1].nil? # remove due_date
message_items = { due_date: due_date_changes[0] }
:remove_experiment_due_date
else # change due_date
message_items = { due_date: @experiment.due_date }
:change_experiment_due_date
end
log_activity(type_of, @experiment, message_items)
end
def log_activity(type_of, experiment, message_items = {})
Activities::CreateActivityService
.call(activity_type: type_of,
owner: current_user,
team: experiment.team,
project: experiment.project,
subject: experiment,
message_items: { experiment: experiment.id })
message_items: message_items.merge({ experiment: experiment.id }))
end
def log_my_module_activity(type_of, my_module)

View file

@ -556,7 +556,14 @@ class Extends
protocol_step_form_moved: 355,
form_block_duplicated: 356,
form_duplicated: 357,
form_unpublished: 358
form_unpublished: 358,
change_experiment_status: 361,
set_experiment_due_date: 362,
change_experiment_due_date: 363,
remove_experiment_due_date: 364,
set_experiment_start_date: 365,
change_experiment_start_date: 366,
remove_experiment_start_date: 367
}
ACTIVITY_GROUPS = {
@ -567,7 +574,7 @@ class Extends
task_protocol: [15, 22, 16, 18, 19, 20, 21, 17, 38, 39, 100, 111, 45, 46, 47, 121, 124, 115, 118, 127, 130, 137,
184, 185, 188, 189, *192..203, 221, 222, 224, 225, 226, 236, *249..252, *274..278, 299, 302, 305, 327, *347..352],
task_inventory: [55, 56, 146, 147, 183],
experiment: [*27..31, 57, 141, 165],
experiment: [*27..31, 57, 141, 165, *361..367],
reports: [48, 50, 49, 163, 164],
inventories: [70, 71, 105, 144, 145, 72, 73, 74, 102, 142, 143, 75, 76, 77,
78, 96, 107, 113, 114, *133..136, 180, 181, 182, *292..298, 308, 329],

View file

@ -372,6 +372,13 @@ en:
form_duplicated_html: "%{user} duplicated form %{form} from %{form_old} in Forms."
form_block_duplicated_html: "%{user} duplicated form block %{block_name} in form %{form} in Form templates."
form_unpublished_html: "%{user} unpublished form %{form}."
change_experiment_status_html: "%{user} changed status from <strong>%{old_status}</strong> to <strong>%{status}</strong> for experiment %{experiment}."
set_experiment_due_date_html: "%{user} set due date %{due_date} on experiment %{experiment}."
change_experiment_due_date_html: "%{user} changed due date %{due_date} on experiment %{experiment}."
remove_experiment_due_date_html: "%{user} removed due date %{due_date} on experiment %{experiment}."
set_experiment_start_date_html: "%{user} set start date %{start_on} on experiment %{experiment}."
change_experiment_start_date_html: "%{user} changed start date %{start_on} on experiment %{experiment}."
remove_experiment_start_date_html: "%{user} removed start date %{start_on} on experiment %{experiment}."
activity_name:
create_project: "Project created"
rename_project: "Project renamed"
@ -701,6 +708,13 @@ en:
form_duplicated: "Form duplicated"
form_block_duplicated: "Form block duplicated"
form_unpublished: "Form unpublished"
change_experiment_status: "Experiment status changed"
set_experiment_due_date: "Experiment due date set"
change_experiment_due_date: "Experiment due date changed"
remove_experiment_due_date: "Experiment due date removed"
set_experiment_start_date: "Experiment start date set"
change_experiment_start_date: "Experiment start date changed"
remove_experiment_start_date: "Experiment start date removed"
activity_group:
projects: "Projects"
task_results: "Task results"