Merge pull request #2770 from okriuchykhin/ok_SCI_4881

Create new activities for exporting assigned items (live & snapshots) [SCI-4881]
This commit is contained in:
Alex Kriuchykhin 2020-08-21 11:01:49 +02:00 committed by GitHub
commit 121644decf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 53 additions and 19 deletions

View file

@ -4,8 +4,7 @@ class MyModuleRepositoriesController < ApplicationController
include ApplicationHelper
before_action :load_my_module
before_action :load_repository, except: %i(repositories_dropdown_list repositories_list_html export_repository)
before_action :load_repository_or_snapshot, only: :export_repository
before_action :load_repository, except: %i(repositories_dropdown_list repositories_list_html)
before_action :check_my_module_view_permissions
before_action :check_repository_view_permissions, except: %i(repositories_dropdown_list repositories_list_html)
before_action :check_assign_repository_records_permissions, only: :update
@ -120,6 +119,18 @@ class MyModuleRepositoriesController < ApplicationController
def export_repository
if params[:header_ids]
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
else
render json: { message: t('zip_export.export_error') }, status: :unprocessable_entity
@ -138,12 +149,6 @@ class MyModuleRepositoriesController < ApplicationController
render_404 unless @repository
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
render_403 unless can_read_experiment?(@my_module.experiment)
end

View file

@ -101,6 +101,28 @@ class MyModuleRepositorySnapshotsController < ApplicationController
render json: {}
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
def load_my_module

View file

@ -12,7 +12,7 @@ module GlobalActivitiesHelper
if value.is_a? String
value
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
no_links ? generate_name(value) : generate_link(value, activity)
end

View file

@ -7,11 +7,12 @@ module RepositoryZipExport
# Fetch rows in the same order as in the currently viewed datatable
if params[:my_module_id]
rows = if repository.is_a?(RepositorySnapshot)
repository.repository_rows
else
repository.repository_rows.joins(:my_module_repository_rows)
.where(my_module_repository_rows: { my_module_id: params[:my_module_id] })
end
repository.repository_rows
else
repository.repository_rows
.joins(:my_module_repository_rows)
.where(my_module_repository_rows: { my_module_id: params[:my_module_id] })
end
else
ordered_row_ids = params[:row_ids]
id_row_map = RepositoryRow.where(id: ordered_row_ids,

View file

@ -8,7 +8,7 @@
data-default-order="<%= default_snapshot_table_order_as_js_array %>"
data-default-table-columns="<%= default_snapshot_table_columns %>"
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) %>"
>
<thead>

View file

@ -143,9 +143,8 @@ class Extends
step: nil
}
ACTIVITY_MESSAGE_ITEMS_TYPES =
ACTIVITY_SUBJECT_TYPES + %w(User Tag RepositoryColumn RepositoryRow Step Asset TinyMceAsset Repository)
.freeze
ACTIVITY_MESSAGE_ITEMS_TYPES = ACTIVITY_SUBJECT_TYPES + %w(User Tag RepositoryColumn RepositoryRow Step
Asset TinyMceAsset Repository RepositorySnapshot).freeze
ACTIVITY_TYPES = {
create_project: 0,
@ -287,7 +286,9 @@ class Extends
archive_inventory_item: 142,
restore_inventory_item: 143,
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 = {

View file

@ -173,6 +173,8 @@ en:
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}."
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:
create_project: "Project created"
@ -311,6 +313,8 @@ en:
delete_chemical_structure_on_protocol: "Chemical structure on protocol deleted"
delete_chemical_structure_on_task: "Chemical structure on task deleted"
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:
projects: "Projects"

View file

@ -396,6 +396,7 @@ Rails.application.routes.draw do
member do
get :full_view_table
post :index_dt
post :export_repository_snapshot
get :status
end