mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-10 23:25:31 +08:00
Create new activities for exporting assigned items (live & snapshots) [SCI-4881]
This commit is contained in:
parent
0f7c8b360e
commit
ce8d12e1c4
8 changed files with 53 additions and 19 deletions
|
@ -4,8 +4,7 @@ class MyModuleRepositoriesController < ApplicationController
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
|
|
||||||
before_action :load_my_module
|
before_action :load_my_module
|
||||||
before_action :load_repository, except: %i(repositories_dropdown_list repositories_list_html export_repository)
|
before_action :load_repository, except: %i(repositories_dropdown_list repositories_list_html)
|
||||||
before_action :load_repository_or_snapshot, only: :export_repository
|
|
||||||
before_action :check_my_module_view_permissions
|
before_action :check_my_module_view_permissions
|
||||||
before_action :check_repository_view_permissions, except: %i(repositories_dropdown_list repositories_list_html)
|
before_action :check_repository_view_permissions, except: %i(repositories_dropdown_list repositories_list_html)
|
||||||
before_action :check_assign_repository_records_permissions, only: :update
|
before_action :check_assign_repository_records_permissions, only: :update
|
||||||
|
@ -120,6 +119,18 @@ class MyModuleRepositoriesController < ApplicationController
|
||||||
def export_repository
|
def export_repository
|
||||||
if params[:header_ids]
|
if params[:header_ids]
|
||||||
RepositoryZipExport.generate_zip(params, @repository, current_user)
|
RepositoryZipExport.generate_zip(params, @repository, current_user)
|
||||||
|
|
||||||
|
Activities::CreateActivityService.call(
|
||||||
|
activity_type: :export_inventory_items_assigned_to_task,
|
||||||
|
owner: current_user,
|
||||||
|
subject: @repository,
|
||||||
|
team: current_team,
|
||||||
|
message_items: {
|
||||||
|
my_module: @my_module.id,
|
||||||
|
repository: @repository.id
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
render json: { message: t('zip_export.export_request_success') }, status: :ok
|
render json: { message: t('zip_export.export_request_success') }, status: :ok
|
||||||
else
|
else
|
||||||
render json: { message: t('zip_export.export_error') }, status: :unprocessable_entity
|
render json: { message: t('zip_export.export_error') }, status: :unprocessable_entity
|
||||||
|
@ -138,12 +149,6 @@ class MyModuleRepositoriesController < ApplicationController
|
||||||
render_404 unless @repository
|
render_404 unless @repository
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_repository_or_snapshot
|
|
||||||
@repository = Repository.accessible_by_teams(current_team).find_by(id: params[:id])
|
|
||||||
@repository ||= RepositorySnapshot.find_by(id: params[:id])
|
|
||||||
render_404 unless @repository
|
|
||||||
end
|
|
||||||
|
|
||||||
def check_my_module_view_permissions
|
def check_my_module_view_permissions
|
||||||
render_403 unless can_read_experiment?(@my_module.experiment)
|
render_403 unless can_read_experiment?(@my_module.experiment)
|
||||||
end
|
end
|
||||||
|
|
|
@ -101,6 +101,28 @@ class MyModuleRepositorySnapshotsController < ApplicationController
|
||||||
render json: {}
|
render json: {}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def export_repository_snapshot
|
||||||
|
if params[:header_ids]
|
||||||
|
RepositoryZipExport.generate_zip(params, @repository_snapshot, current_user)
|
||||||
|
|
||||||
|
Activities::CreateActivityService.call(
|
||||||
|
activity_type: :export_inventory_snapshot_items_assigned_to_task,
|
||||||
|
owner: current_user,
|
||||||
|
subject: @repository_snapshot,
|
||||||
|
team: current_team,
|
||||||
|
message_items: {
|
||||||
|
my_module: @my_module.id,
|
||||||
|
repository_snapshot: @repository_snapshot.id,
|
||||||
|
created_at: @repository_snapshot.created_at
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
render json: { message: t('zip_export.export_request_success') }, status: :ok
|
||||||
|
else
|
||||||
|
render json: { message: t('zip_export.export_error') }, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def load_my_module
|
def load_my_module
|
||||||
|
|
|
@ -12,7 +12,7 @@ module GlobalActivitiesHelper
|
||||||
if value.is_a? String
|
if value.is_a? String
|
||||||
value
|
value
|
||||||
elsif value['type'] == 'Time' # use saved date for printing
|
elsif value['type'] == 'Time' # use saved date for printing
|
||||||
l(Time.at(value['value']), format: :full_date)
|
l(Time.at(value['value']), format: :full)
|
||||||
else
|
else
|
||||||
no_links ? generate_name(value) : generate_link(value, activity)
|
no_links ? generate_name(value) : generate_link(value, activity)
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,11 +7,12 @@ module RepositoryZipExport
|
||||||
# Fetch rows in the same order as in the currently viewed datatable
|
# Fetch rows in the same order as in the currently viewed datatable
|
||||||
if params[:my_module_id]
|
if params[:my_module_id]
|
||||||
rows = if repository.is_a?(RepositorySnapshot)
|
rows = if repository.is_a?(RepositorySnapshot)
|
||||||
repository.repository_rows
|
repository.repository_rows
|
||||||
else
|
else
|
||||||
repository.repository_rows.joins(:my_module_repository_rows)
|
repository.repository_rows
|
||||||
.where(my_module_repository_rows: { my_module_id: params[:my_module_id] })
|
.joins(:my_module_repository_rows)
|
||||||
end
|
.where(my_module_repository_rows: { my_module_id: params[:my_module_id] })
|
||||||
|
end
|
||||||
else
|
else
|
||||||
ordered_row_ids = params[:row_ids]
|
ordered_row_ids = params[:row_ids]
|
||||||
id_row_map = RepositoryRow.where(id: ordered_row_ids,
|
id_row_map = RepositoryRow.where(id: ordered_row_ids,
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
data-default-order="<%= default_snapshot_table_order_as_js_array %>"
|
data-default-order="<%= default_snapshot_table_order_as_js_array %>"
|
||||||
data-default-table-columns="<%= default_snapshot_table_columns %>"
|
data-default-table-columns="<%= default_snapshot_table_columns %>"
|
||||||
data-load-state-url="<%= repository_load_table_state_path(@repository_snapshot) %>"
|
data-load-state-url="<%= repository_load_table_state_path(@repository_snapshot) %>"
|
||||||
data-export-url="<%= export_repository_my_module_repository_path(@my_module ,@repository_snapshot) %>"
|
data-export-url="<%= export_repository_snapshot_my_module_repository_snapshot_path(@my_module, @repository_snapshot) %>"
|
||||||
data-versions-sidebar-url="<%= full_view_sidebar_my_module_repository_snapshots_path(@my_module, @repository_snapshot.parent_id) %>"
|
data-versions-sidebar-url="<%= full_view_sidebar_my_module_repository_snapshots_path(@my_module, @repository_snapshot.parent_id) %>"
|
||||||
>
|
>
|
||||||
<thead>
|
<thead>
|
||||||
|
|
|
@ -143,9 +143,8 @@ class Extends
|
||||||
step: nil
|
step: nil
|
||||||
}
|
}
|
||||||
|
|
||||||
ACTIVITY_MESSAGE_ITEMS_TYPES =
|
ACTIVITY_MESSAGE_ITEMS_TYPES = ACTIVITY_SUBJECT_TYPES + %w(User Tag RepositoryColumn RepositoryRow Step
|
||||||
ACTIVITY_SUBJECT_TYPES + %w(User Tag RepositoryColumn RepositoryRow Step Asset TinyMceAsset Repository)
|
Asset TinyMceAsset Repository RepositorySnapshot).freeze
|
||||||
.freeze
|
|
||||||
|
|
||||||
ACTIVITY_TYPES = {
|
ACTIVITY_TYPES = {
|
||||||
create_project: 0,
|
create_project: 0,
|
||||||
|
@ -287,7 +286,9 @@ class Extends
|
||||||
archive_inventory_item: 142,
|
archive_inventory_item: 142,
|
||||||
restore_inventory_item: 143,
|
restore_inventory_item: 143,
|
||||||
archive_inventory: 144,
|
archive_inventory: 144,
|
||||||
restore_inventory: 145
|
restore_inventory: 145,
|
||||||
|
export_inventory_items_assigned_to_task: 146,
|
||||||
|
export_inventory_snapshot_items_assigned_to_task: 147
|
||||||
}
|
}
|
||||||
|
|
||||||
ACTIVITY_GROUPS = {
|
ACTIVITY_GROUPS = {
|
||||||
|
|
|
@ -173,6 +173,8 @@ en:
|
||||||
delete_chemical_structure_on_protocol_html: "%{user} deleted chemical structure %{asset_name} on protocol %{protocol}."
|
delete_chemical_structure_on_protocol_html: "%{user} deleted chemical structure %{asset_name} on protocol %{protocol}."
|
||||||
delete_chemical_structure_on_task_html: "%{user} deleted chemical structure %{asset_name} on task %{my_module}."
|
delete_chemical_structure_on_task_html: "%{user} deleted chemical structure %{asset_name} on task %{my_module}."
|
||||||
protocol_description_in_task_edited_html: "%{user} edited protocol description on task %{my_module}."
|
protocol_description_in_task_edited_html: "%{user} edited protocol description on task %{my_module}."
|
||||||
|
export_inventory_items_assigned_to_task_html: "%{user} exported inventory item(s) assigned to task %{my_module} from inventory %{repository}: Live version."
|
||||||
|
export_inventory_snapshot_items_assigned_to_task_html: "%{user} exported inventory item(s) assigned to task %{my_module} from inventory %{repository_snapshot}: Snapshot of %{created_at}."
|
||||||
|
|
||||||
activity_name:
|
activity_name:
|
||||||
create_project: "Project created"
|
create_project: "Project created"
|
||||||
|
@ -311,6 +313,8 @@ en:
|
||||||
delete_chemical_structure_on_protocol: "Chemical structure on protocol deleted"
|
delete_chemical_structure_on_protocol: "Chemical structure on protocol deleted"
|
||||||
delete_chemical_structure_on_task: "Chemical structure on task deleted"
|
delete_chemical_structure_on_task: "Chemical structure on task deleted"
|
||||||
protocol_description_in_task_edited: "Protocol description in task edited"
|
protocol_description_in_task_edited: "Protocol description in task edited"
|
||||||
|
export_inventory_items_assigned_to_task: "Task-assigned inventory items exported (live version)"
|
||||||
|
export_inventory_snapshot_items_assigned_to_task: "Task-assigned inventory items exported (snapshot)"
|
||||||
|
|
||||||
activity_group:
|
activity_group:
|
||||||
projects: "Projects"
|
projects: "Projects"
|
||||||
|
|
|
@ -395,6 +395,7 @@ Rails.application.routes.draw do
|
||||||
member do
|
member do
|
||||||
get :full_view_table
|
get :full_view_table
|
||||||
post :index_dt
|
post :index_dt
|
||||||
|
post :export_repository_snapshot
|
||||||
get :status
|
get :status
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue