mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
Merge pull request #2632 from okriuchykhin/ok_SCI_4715
Remove inventory links of unshared inventory [SCI-4715]
This commit is contained in:
commit
d89dce9f72
|
@ -7,24 +7,14 @@ class MyModulesController < ApplicationController
|
|||
include ActionView::Helpers::UrlHelper
|
||||
include ApplicationHelper
|
||||
|
||||
before_action :load_vars,
|
||||
only: %i(show update destroy description due_date protocols
|
||||
results samples activities activities_tab
|
||||
assign_samples unassign_samples delete_samples
|
||||
toggle_task_state samples_index archive
|
||||
complete_my_module repository repository_index
|
||||
assign_repository_records unassign_repository_records
|
||||
unassign_repository_records_modal
|
||||
assign_repository_records_modal
|
||||
repositories_dropdown update_description update_protocol_description unshared_inventory)
|
||||
before_action :load_vars_nested, only: %i(new create)
|
||||
before_action :load_vars
|
||||
before_action :load_repository, only: %i(assign_repository_records
|
||||
unassign_repository_records
|
||||
unassign_repository_records_modal
|
||||
assign_repository_records_modal
|
||||
repository_index)
|
||||
before_action :load_projects_tree, only: %i(protocols results activities
|
||||
samples repository archive unshared_inventory)
|
||||
samples repository archive)
|
||||
before_action :check_manage_permissions_archive, only: %i(update destroy)
|
||||
before_action :check_manage_permissions,
|
||||
only: %i(description due_date update_description update_protocol_description)
|
||||
|
@ -527,11 +517,6 @@ class MyModulesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def unshared_inventory
|
||||
@inventory = Repository.used_on_task_but_unshared(@my_module, current_team).find(params[:inventory_id])
|
||||
@inventory_admin = @inventory.created_by
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def task_completion_activity
|
||||
|
|
|
@ -15,6 +15,7 @@ class Repository < RepositoryBase
|
|||
inverse_of: :original_repository
|
||||
|
||||
before_save :sync_name_with_snapshots, if: :name_changed?
|
||||
after_save :unassign_unshared_items, if: :saved_change_to_permission_level
|
||||
before_destroy :refresh_report_references_on_destroy, prepend: true
|
||||
|
||||
validates :name,
|
||||
|
@ -35,12 +36,6 @@ class Repository < RepositoryBase
|
|||
.distinct
|
||||
}
|
||||
|
||||
scope :used_on_task_but_unshared, lambda { |task, team|
|
||||
where(id: task.repository_rows
|
||||
.select(:repository_id))
|
||||
.where.not(id: accessible_by_teams(team.id).select(:id)).distinct
|
||||
}
|
||||
|
||||
def self.within_global_limits?
|
||||
return true unless Rails.configuration.x.global_repositories_limit.positive?
|
||||
|
||||
|
@ -212,6 +207,17 @@ class Repository < RepositoryBase
|
|||
repository_rows.joins(:my_module_repository_rows).where(my_module_repository_rows: { my_module_id: my_module.id })
|
||||
end
|
||||
|
||||
def unassign_unshared_items
|
||||
return if shared_read? || shared_write?
|
||||
|
||||
MyModuleRepositoryRow.joins(my_module: { experiment: { project: :team } })
|
||||
.joins(repository_row: :repository)
|
||||
.where(repository_rows: { repository: self })
|
||||
.where.not(my_module: { experiment: { projects: { team: team } } })
|
||||
.where.not(my_module: { experiment: { projects: { team: teams_shared_with } } })
|
||||
.destroy_all
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def sync_name_with_snapshots
|
||||
|
|
|
@ -6,6 +6,8 @@ class TeamRepository < ApplicationRecord
|
|||
belongs_to :team
|
||||
belongs_to :repository
|
||||
|
||||
before_destroy :unassign_unshared_items
|
||||
|
||||
validates :permission_level, presence: true
|
||||
validates :repository, uniqueness: { scope: :team_id }
|
||||
validate :team_cannot_be_the_same
|
||||
|
@ -15,4 +17,14 @@ class TeamRepository < ApplicationRecord
|
|||
def team_cannot_be_the_same
|
||||
errors.add(:team_id, :same_team) if repository&.team_id == team_id
|
||||
end
|
||||
|
||||
def unassign_unshared_items
|
||||
return if repository.shared_read? || repository.shared_write?
|
||||
|
||||
MyModuleRepositoryRow.joins(my_module: { experiment: { project: :team } })
|
||||
.joins(repository_row: :repository)
|
||||
.where(my_module: { experiment: { projects: { team: team } } })
|
||||
.where(repository_rows: { repository: repository })
|
||||
.destroy_all
|
||||
end
|
||||
end
|
||||
|
|
|
@ -16,23 +16,3 @@
|
|||
</a>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
|
||||
<% Repository.used_on_task_but_unshared(@my_module, current_team).each do |repository| %>
|
||||
<li>
|
||||
<a class="muted dropdown-item"
|
||||
title="<%= repository.name %>"
|
||||
href="<%= unshared_inventory_my_module_path(inventory_id: repository.id)%>">
|
||||
|
||||
<% if enable_counters %>
|
||||
<% cache [repository, @my_module] do %>
|
||||
<%= truncate(repository.name) %>
|
||||
<span class="assigned-items-counter"><%= "(#{@my_module.repository_rows_count(repository)})" %></span>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= truncate(repository.name) %>
|
||||
<span class="assigned-items-counter"><i class="fas fa-spinner fa-spin"></i></span>
|
||||
<% end %>
|
||||
</a>
|
||||
</li>
|
||||
<% end %>
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
<% provide(:head_title, t("my_modules.repository.head_title",
|
||||
project: h(@project.name),
|
||||
module: h(@my_module.name),
|
||||
repository: h(@inventory.name)).html_safe) %>
|
||||
|
||||
<%= render partial: "shared/sidebar", locals: { current_task: @my_module, page: 'task' } %>
|
||||
<%= render partial: "shared/secondary_navigation" %>
|
||||
|
||||
<div id="content">
|
||||
<div class="content-pane">
|
||||
<h4><%= t("my_modules.unshared_inventory.title_html", inventory_name: @inventory.name) %></h4>
|
||||
<%= t("my_modules.unshared_inventory.body_html",
|
||||
inventory_name: @inventory.name,
|
||||
team_name: @inventory.team.name,
|
||||
admin_name: @inventory_admin.name,
|
||||
admin_email: @inventory_admin.email) %>
|
||||
|
||||
</div>
|
||||
</div>
|
|
@ -450,9 +450,6 @@ Rails.application.routes.draw do
|
|||
post 'unassign_repository_records/:repository_id',
|
||||
to: 'my_modules#unassign_repository_records',
|
||||
as: :unassign_repository_records
|
||||
get 'unshared_inventory/:inventory_id',
|
||||
to: 'my_modules#unshared_inventory',
|
||||
as: :unshared_inventory
|
||||
get 'archive' # Archive view for single module
|
||||
get 'complete_my_module'
|
||||
post 'toggle_task_state'
|
||||
|
|
Loading…
Reference in a new issue