X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/289e5d15402d12ad02ac77e911aca7a32746c905..c005c5ab76492b844e84d1c66f75797bd98d0996:/apps/workbench/app/controllers/collections_controller.rb diff --git a/apps/workbench/app/controllers/collections_controller.rb b/apps/workbench/app/controllers/collections_controller.rb index 57c6bb5f42..010cd220e7 100644 --- a/apps/workbench/app/controllers/collections_controller.rb +++ b/apps/workbench/app/controllers/collections_controller.rb @@ -4,7 +4,8 @@ class CollectionsController < ApplicationController skip_before_filter(:find_object_by_uuid, only: [:provenance, :show_file, :show_file_links]) # We depend on show_file to display the user agreement: - skip_before_filter :check_user_agreements, only: [:show_file] + skip_before_filter :check_user_agreements, only: :show_file + skip_before_filter :check_user_profile, only: :show_file RELATION_LIMIT = 5 @@ -43,6 +44,13 @@ class CollectionsController < ApplicationController end def choose + # Find collections using default find_objects logic, then search for name + # links, and preload any other links connected to the collections that are + # found. + # Name links will be obsolete when issue #3036 is merged, + # at which point this entire custom #choose function can probably be + # eliminated. + params[:limit] ||= 40 find_objects_for_index @@ -58,6 +66,7 @@ class CollectionsController < ApplicationController @objects = Collection. filter([['uuid','in',@name_links.collect(&:head_uuid)]]) + preload_links_for_objects (@collections.to_a + @objects.to_a) super end @@ -169,6 +178,14 @@ class CollectionsController < ApplicationController .where(head_uuid: @object.uuid, link_class: 'name').results project_hash = Group.where(uuid: @project_links.map(&:tail_uuid)).to_hash @projects = project_hash.values + + if @object.uuid.match /[0-9a-f]{32}/ + @same_pdh = Collection.filter([["portable_data_hash", "=", @object.portable_data_hash]]) + owners = @same_pdh.map {|s| s.owner_uuid}.to_a + preload_objects_for_dataclass Group, owners + preload_objects_for_dataclass User, owners + end + @permissions = Link.limit(RELATION_LIMIT).order("modified_at DESC") .where(head_uuid: @object.uuid, link_class: 'permission', name: 'can_read').results