mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-13 00:24:42 +08:00
Refactor SoftLockedRepository logic [SCI-11148] (#7985)
This commit is contained in:
parent
0c774a736e
commit
ab658cfeb1
11 changed files with 29 additions and 19 deletions
|
@ -180,6 +180,9 @@ module Api
|
|||
|
||||
def load_inventory(key = :inventory_id)
|
||||
@inventory = @team.repositories.find(params.require(key))
|
||||
|
||||
@inventory.unlock! if @inventory.is_a?(SoftLockedRepository)
|
||||
|
||||
raise PermissionError.new(Repository, :read) unless can_read_repository?(@inventory)
|
||||
end
|
||||
|
||||
|
|
|
@ -22,8 +22,7 @@ class AssetsController < ApplicationController
|
|||
before_action :check_restore_permission, only: :restore_version
|
||||
|
||||
def file_preview
|
||||
editable = can_manage_asset?(@asset) && (@asset.repository_asset_value.blank? ||
|
||||
!@asset.repository_cell.repository_row.repository.is_a?(SoftLockedRepository))
|
||||
editable = can_manage_asset?(@asset) && @asset.repository_asset_value.blank?
|
||||
render json: { html: render_to_string(
|
||||
partial: 'shared/file_preview/content',
|
||||
locals: {
|
||||
|
|
|
@ -495,7 +495,7 @@ class RepositoriesController < ApplicationController
|
|||
end
|
||||
|
||||
def set_inline_name_editing
|
||||
return unless can_manage_repository?(@repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
return unless can_manage_repository?(@repository)
|
||||
|
||||
@inline_editable_title_config = {
|
||||
name: 'title',
|
||||
|
|
|
@ -12,8 +12,7 @@ module RepositoryDatatableHelper
|
|||
repository_row_connections_enabled = Repository.repository_row_connections_enabled?
|
||||
reminders_enabled = Repository.reminders_enabled?
|
||||
stock_managable = has_stock_management && !options[:disable_stock_management] &&
|
||||
can_manage_repository_stock?(repository) &&
|
||||
!repository.is_a?(SoftLockedRepository)
|
||||
can_manage_repository_stock?(repository)
|
||||
stock_consumption_permitted = has_stock_management && options[:include_stock_consumption] && options[:my_module] &&
|
||||
stock_consumption_permitted?(repository, options[:my_module])
|
||||
default_columns_method_name = "#{repository.class.name.underscore}_default_columns"
|
||||
|
@ -31,7 +30,7 @@ module RepositoryDatatableHelper
|
|||
row['relationships_enabled'] = repository_row_connections_enabled
|
||||
row['hasActiveReminders'] = record.has_active_reminders if reminders_enabled
|
||||
|
||||
unless options[:view_mode] || repository.is_a?(SoftLockedRepository)
|
||||
unless options[:view_mode]
|
||||
row['recordUpdateUrl'] =
|
||||
Rails.application.routes.url_helpers.repository_repository_row_path(repository, record)
|
||||
|
||||
|
|
|
@ -8,4 +8,12 @@ class SoftLockedRepository < Repository
|
|||
def shareable_write?
|
||||
false
|
||||
end
|
||||
|
||||
def unlocked?
|
||||
@unlocked == true
|
||||
end
|
||||
|
||||
def unlock!
|
||||
@unlocked = true
|
||||
end
|
||||
end
|
||||
|
|
|
@ -28,7 +28,8 @@ Canaid::Permissions.register_for(Repository) do
|
|||
create_repository_columns)
|
||||
.each do |perm|
|
||||
can perm do |_, repository|
|
||||
repository.active? && repository.repository_snapshots.provisioning.none?
|
||||
repository.active? && repository.repository_snapshots.provisioning.none? &&
|
||||
(!repository.is_a?(SoftLockedRepository) || repository.unlocked?)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ module Toolbars
|
|||
private
|
||||
|
||||
def rename_action
|
||||
return unless @single && can_manage_repository?(@repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
return unless @single && can_manage_repository?(@repository)
|
||||
|
||||
{
|
||||
name: :update,
|
||||
|
@ -67,7 +67,7 @@ module Toolbars
|
|||
|
||||
def archive_action
|
||||
return unless @repositories.all? do |repository|
|
||||
can_archive_repository?(repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
can_archive_repository?(repository)
|
||||
end
|
||||
|
||||
{
|
||||
|
@ -92,7 +92,7 @@ module Toolbars
|
|||
|
||||
def restore_action
|
||||
return unless @repositories.all? do |repository|
|
||||
can_archive_repository?(repository) && !repository.is_a?(SoftLockedRepository)
|
||||
can_archive_repository?(repository)
|
||||
end
|
||||
|
||||
{
|
||||
|
@ -105,7 +105,7 @@ module Toolbars
|
|||
end
|
||||
|
||||
def delete_action
|
||||
return unless @single && can_delete_repository?(@repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
return unless @single && can_delete_repository?(@repository)
|
||||
|
||||
{
|
||||
name: :delete,
|
||||
|
|
|
@ -42,7 +42,7 @@ module Toolbars
|
|||
private
|
||||
|
||||
def restore_action
|
||||
return unless can_manage_repository_rows?(@repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
return unless can_manage_repository_rows?(@repository)
|
||||
|
||||
return unless @repository_rows.all?(&:archived?)
|
||||
|
||||
|
@ -57,7 +57,7 @@ module Toolbars
|
|||
end
|
||||
|
||||
def edit_action
|
||||
return unless can_manage_repository_rows?(@repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
return unless can_manage_repository_rows?(@repository)
|
||||
|
||||
return unless @repository_rows.all?(&:active?)
|
||||
|
||||
|
@ -87,7 +87,7 @@ module Toolbars
|
|||
end
|
||||
|
||||
def duplicate_action
|
||||
return unless can_create_repository_rows?(@repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
return unless can_create_repository_rows?(@repository)
|
||||
|
||||
return unless @repository_rows.all?(&:active?)
|
||||
|
||||
|
@ -151,7 +151,7 @@ module Toolbars
|
|||
end
|
||||
|
||||
def archive_action
|
||||
return unless can_manage_repository_rows?(@repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
return unless can_manage_repository_rows?(@repository)
|
||||
|
||||
return unless @repository_rows.all?(&:active?)
|
||||
|
||||
|
@ -166,7 +166,7 @@ module Toolbars
|
|||
end
|
||||
|
||||
def delete_action
|
||||
return unless can_delete_repository_rows?(@repository) && !@repository.is_a?(SoftLockedRepository)
|
||||
return unless can_delete_repository_rows?(@repository)
|
||||
|
||||
return unless @repository_rows.all?(&:archived?)
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<% if @repository.is_a?(LinkedRepository) %>
|
||||
<th id="row-external-id"><%= t('repositories.table.external_id') %></th>
|
||||
<% end %>
|
||||
<% columns_editable = can_manage_repository_columns?(@repository) && !repository.is_a?(SoftLockedRepository) %>
|
||||
<% columns_editable = can_manage_repository_columns?(@repository) %>
|
||||
<% repository.repository_columns.order(:id).each do |column| %>
|
||||
<th
|
||||
class="repository-column <%= 'row-stock item-stock' if column.data_type == 'RepositoryStockValue' %>"
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<span class="button-text"><%= t('repositories.index.snapshot_provisioning_in_progress') %></span>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if can_create_repository_rows?(@repository) && !@repository.is_a?(SoftLockedRepository) %>
|
||||
<% if can_create_repository_rows?(@repository) %>
|
||||
<button type="button" data-toggle="tooltip" data-placement="bottom" title="<%= t('repositories.show.button_tooltip.new') %>"
|
||||
class="btn btn-primary editAdd auto-shrink-button"
|
||||
id="addRepositoryRecord" data-view-mode="active">
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<% if can_create_repository_columns?(@repository) && !@repository.is_a?(SoftLockedRepository) %>
|
||||
<% if can_create_repository_columns?(@repository) %>
|
||||
<button id="new-repo-column-modal"
|
||||
data-view-mode="active"
|
||||
class="btn btn-secondary manage-repo-column"
|
||||
|
|
Loading…
Add table
Reference in a new issue