Merge pull request #2632 from okriuchykhin/ok_SCI_4715

Remove inventory links of unshared inventory [SCI-4715]
This commit is contained in:
Miha Mencin 2020-06-02 10:46:33 +02:00 committed by GitHub
commit d89dce9f72
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 26 additions and 65 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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