mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-07 12:27:11 +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
6 changed files with 26 additions and 65 deletions
|
@ -7,24 +7,14 @@ class MyModulesController < ApplicationController
|
||||||
include ActionView::Helpers::UrlHelper
|
include ActionView::Helpers::UrlHelper
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
|
|
||||||
before_action :load_vars,
|
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_repository, only: %i(assign_repository_records
|
before_action :load_repository, only: %i(assign_repository_records
|
||||||
unassign_repository_records
|
unassign_repository_records
|
||||||
unassign_repository_records_modal
|
unassign_repository_records_modal
|
||||||
assign_repository_records_modal
|
assign_repository_records_modal
|
||||||
repository_index)
|
repository_index)
|
||||||
before_action :load_projects_tree, only: %i(protocols results activities
|
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_archive, only: %i(update destroy)
|
||||||
before_action :check_manage_permissions,
|
before_action :check_manage_permissions,
|
||||||
only: %i(description due_date update_description update_protocol_description)
|
only: %i(description due_date update_description update_protocol_description)
|
||||||
|
@ -527,11 +517,6 @@ class MyModulesController < ApplicationController
|
||||||
end
|
end
|
||||||
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
|
private
|
||||||
|
|
||||||
def task_completion_activity
|
def task_completion_activity
|
||||||
|
|
|
@ -15,6 +15,7 @@ class Repository < RepositoryBase
|
||||||
inverse_of: :original_repository
|
inverse_of: :original_repository
|
||||||
|
|
||||||
before_save :sync_name_with_snapshots, if: :name_changed?
|
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
|
before_destroy :refresh_report_references_on_destroy, prepend: true
|
||||||
|
|
||||||
validates :name,
|
validates :name,
|
||||||
|
@ -35,12 +36,6 @@ class Repository < RepositoryBase
|
||||||
.distinct
|
.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?
|
def self.within_global_limits?
|
||||||
return true unless Rails.configuration.x.global_repositories_limit.positive?
|
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 })
|
repository_rows.joins(:my_module_repository_rows).where(my_module_repository_rows: { my_module_id: my_module.id })
|
||||||
end
|
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
|
private
|
||||||
|
|
||||||
def sync_name_with_snapshots
|
def sync_name_with_snapshots
|
||||||
|
|
|
@ -6,6 +6,8 @@ class TeamRepository < ApplicationRecord
|
||||||
belongs_to :team
|
belongs_to :team
|
||||||
belongs_to :repository
|
belongs_to :repository
|
||||||
|
|
||||||
|
before_destroy :unassign_unshared_items
|
||||||
|
|
||||||
validates :permission_level, presence: true
|
validates :permission_level, presence: true
|
||||||
validates :repository, uniqueness: { scope: :team_id }
|
validates :repository, uniqueness: { scope: :team_id }
|
||||||
validate :team_cannot_be_the_same
|
validate :team_cannot_be_the_same
|
||||||
|
@ -15,4 +17,14 @@ class TeamRepository < ApplicationRecord
|
||||||
def team_cannot_be_the_same
|
def team_cannot_be_the_same
|
||||||
errors.add(:team_id, :same_team) if repository&.team_id == team_id
|
errors.add(:team_id, :same_team) if repository&.team_id == team_id
|
||||||
end
|
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
|
end
|
||||||
|
|
|
@ -16,23 +16,3 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% 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',
|
post 'unassign_repository_records/:repository_id',
|
||||||
to: 'my_modules#unassign_repository_records',
|
to: 'my_modules#unassign_repository_records',
|
||||||
as: :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 'archive' # Archive view for single module
|
||||||
get 'complete_my_module'
|
get 'complete_my_module'
|
||||||
post 'toggle_task_state'
|
post 'toggle_task_state'
|
||||||
|
|
Loading…
Add table
Reference in a new issue