mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-11 23:54:43 +08:00
56 lines
1.4 KiB
Ruby
56 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class AssignedRepositorySerializer < ActiveModel::Serializer
|
|
include Canaid::Helpers::PermissionsHelper
|
|
include Rails.application.routes.url_helpers
|
|
include MyModulesHelper
|
|
|
|
attributes :id
|
|
|
|
attribute :name do
|
|
can_read? ? object.name : I18n.t('my_modules.assigned_items.repository.private_repository_name')
|
|
end
|
|
|
|
attribute :assigned_rows_count do
|
|
object['assigned_rows_count']
|
|
end
|
|
|
|
attribute :is_snapshot do
|
|
object.is_a?(RepositorySnapshot)
|
|
end
|
|
|
|
attribute :has_stock do
|
|
can_read? && object.has_stock_management?
|
|
end
|
|
|
|
attribute :has_stock_consumption do
|
|
can_read? && object.has_stock_consumption?
|
|
end
|
|
|
|
attribute :can_manage_consumption do
|
|
can_read? && can_update_my_module_stock_consumption?(scope[:user], scope[:my_module])
|
|
end
|
|
|
|
attribute :stock_column_name do
|
|
object.repository_stock_column.name if can_read? && object.has_stock_management?
|
|
end
|
|
|
|
attribute :footer_label do
|
|
assigned_repository_simple_view_footer_label(object)
|
|
end
|
|
|
|
attribute :name_column_id do
|
|
assigned_repository_simple_view_name_column_id(object)
|
|
end
|
|
|
|
attribute :urls do
|
|
list = { assigned_rows: assigned_repository_simple_view_index_path(scope[:my_module], object) }
|
|
list[:full_view] = assigned_repository_full_view_table_path(scope[:my_module], object) if can_read?
|
|
|
|
list
|
|
end
|
|
|
|
def can_read?
|
|
@can_read ||= can_read_repository?(scope[:user], object)
|
|
end
|
|
end
|