Merge pull request #8114 from aignatov-bio/ai-sci-11388-add-activities-for-forms

Add activities to form templates [SCI-11388]
This commit is contained in:
aignatov-bio 2025-01-03 13:33:11 +01:00 committed by GitHub
commit b0463b06b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 64 additions and 2 deletions

View file

@ -18,6 +18,7 @@ class FormFieldsController < ApplicationController
)
)
if @form_field.save
log_activity(:form_block_added, block_name: @form_field.name)
render json: @form_field, serializer: FormFieldSerializer, user: current_user
else
render json: { error: @form_field.errors.full_messages }, status: :unprocessable_entity
@ -28,6 +29,7 @@ class FormFieldsController < ApplicationController
def update
ActiveRecord::Base.transaction do
if @form_field.update(form_field_params.merge({ last_modified_by: current_user }))
log_activity(:form_block_edited, block_name: @form_field.name)
render json: @form_field, serializer: FormFieldSerializer, user: current_user
else
render json: { error: @form_field.errors.full_messages }, status: :unprocessable_entity
@ -38,6 +40,7 @@ class FormFieldsController < ApplicationController
def destroy
ActiveRecord::Base.transaction do
if @form_field.destroy
log_activity(:form_block_deleted, block_name: @form_field.name)
render json: {}
else
render json: { error: @form_field.errors.full_messages }, status: :unprocessable_entity
@ -51,6 +54,7 @@ class FormFieldsController < ApplicationController
@form_field = @form.form_fields.find(data[:id])
@form_field.insert_at!(data[:position].to_i)
end
log_activity(:form_block_rearranged)
end
render json: params[:form_field_positions], status: :ok
@ -79,4 +83,16 @@ class FormFieldsController < ApplicationController
def form_field_params
params.require(:form_field).permit(:name, :description, { data: [:type, :unit, :time, :range, validations: {}, options: []] }, :required, :allow_not_applicable, :uid)
end
def log_activity(type_of, message_items = {})
Activities::CreateActivityService
.call(activity_type: type_of,
owner: current_user,
team: @form.team,
subject: @form,
message_items: {
form: @form.id,
user: current_user.id
}.merge(message_items))
end
end

View file

@ -38,6 +38,7 @@ class FormsController < ApplicationController
)
if @form.save
log_activity(@form, :form_created)
render json: @form, serializer: FormSerializer, user: current_user
else
render json: { error: @form.errors.full_messages }, status: :unprocessable_entity
@ -48,6 +49,7 @@ class FormsController < ApplicationController
def update
ActiveRecord::Base.transaction do
if @form.update(form_params.merge({ last_modified_by: current_user }))
log_activity(@form, :form_name_changed)
render json: @form, serializer: FormSerializer, user: current_user
else
render json: { error: @form.errors.full_messages }, status: :unprocessable_entity
@ -73,6 +75,7 @@ class FormsController < ApplicationController
published_by: current_user,
published_on: DateTime.now
)
log_activity(@form, :form_published, { version_number: 1 })
render json: @form, serializer: FormSerializer, user: current_user
end
@ -99,6 +102,7 @@ class FormsController < ApplicationController
forms.each do |form|
form.transaction do
form.archive!(current_user)
log_activity(form, :form_archived)
counter += 1
rescue StandardError => e
Rails.logger.error e.message
@ -123,6 +127,7 @@ class FormsController < ApplicationController
forms.each do |form|
form.transaction do
form.restore!(current_user)
log_activity(form, :form_restored)
counter += 1
rescue StandardError => e
Rails.logger.error e.message
@ -189,4 +194,16 @@ class FormsController < ApplicationController
def form_params
params.require(:form).permit(:name, :description)
end
def log_activity(form, type_of, message_items = {})
Activities::CreateActivityService
.call(activity_type: type_of,
owner: current_user,
team: form.team,
subject: form,
message_items: {
form: form.id,
user: current_user.id
}.merge(message_items))
end
end

View file

@ -118,6 +118,8 @@ module GlobalActivitiesHelper
else
storage_location_path(obj, team: activity.team.id)
end
when Form
path = form_path(obj, team: obj.team.id)
else
return current_value
end

View file

@ -534,7 +534,16 @@ class Extends
form_access_revoked: 333,
form_access_granted_all_team_members: 334,
form_access_changed_all_team_members: 335,
form_access_revoked_all_team_members: 336
form_access_revoked_all_team_members: 336,
form_created: 337,
form_archived: 338,
form_restored: 339,
form_published: 340,
form_name_changed: 341,
form_block_added: 342,
form_block_edited: 343,
form_block_deleted: 344,
form_block_rearranged: 345
}
ACTIVITY_GROUPS = {
@ -558,7 +567,7 @@ class Extends
storage_locations: [*309..315],
container_storage_locations: [*316..322, 326],
storage_location_repository_rows: [*323..325],
forms: [331, 332, 333, 334, 335, 336]
forms: [331, 332, 333, 334, 335, 336, *337..345]
}
TOP_LEVEL_ASSIGNABLES = %w(Project Team Protocol Repository Form).freeze

View file

@ -350,6 +350,15 @@ en:
form_access_granted_all_team_members_html: "%{user} granted access to all team members of %{team} team with user role %{role} to form template %{form}."
form_access_changed_all_team_members_html: "%{user} changed %{team}'s role on form template %{form} to %{role}."
form_access_revoked_all_team_members_html: "%{user} removed %{team} team members with user role %{role} from form template %{form}."
form_created_html: "%{user} created form %{form} in Form templates."
form_archived_html: "%{user} archived form %{form} in Form templates."
form_restored_html: "%{user} restored form %{form} from archive in Form templates."
form_published_html: "%{user} published form %{form} version %{version_number}."
form_name_changed_html: "%{user} edited form name in Form templates."
form_block_added_html: "%{user} created form block %{block_name} in form %{form} in Form templates."
form_block_edited_html: "%{user} edited form block %{block_name} in form %{form} in Form templates."
form_block_deleted_html: "%{user} deleted form block %{block_name} in form %{form} in Form templates."
form_block_rearranged_html: "%{user} rearranged form blocks in form %{form} in Form templates."
activity_name:
create_project: "Project created"
rename_project: "Project renamed"
@ -651,6 +660,15 @@ en:
task_result_restore_asset_version: "Result file version restored"
repository_column_restore_asset_version: "Inventroy item file version restored"
protocol_step_restore_asset_version: "Protocol step file version restored"
form_created: "Form created"
form_archived: "Form archived"
form_restored: "Form restored from archive"
form_published: "Form published"
form_name_changed: "Form name edited"
form_block_added: "Form block added"
form_block_edited: "Form block edited"
form_block_deleted: "Form block deleted"
form_block_rearranged: "Form block rearranged"
activity_group:
projects: "Projects"
task_results: "Task results"