Refactor SoftLockedRepository logic [SCI-11148] (#7985)

This commit is contained in:
Martin Artnik 2024-10-28 10:50:24 +01:00 committed by GitHub
parent 0c774a736e
commit ab658cfeb1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 29 additions and 19 deletions

View file

@ -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

View file

@ -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: {

View file

@ -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',

View file

@ -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)

View file

@ -8,4 +8,12 @@ class SoftLockedRepository < Repository
def shareable_write?
false
end
def unlocked?
@unlocked == true
end
def unlock!
@unlocked = true
end
end

View file

@ -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

View file

@ -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,

View file

@ -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?)

View file

@ -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' %>"

View file

@ -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">

View file

@ -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"