X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/49a6ced3c7a540a7da7155ab1c3120a5227c620c..94e8dd9891a2c163f9d668f251c38e9a0979ef49:/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 3b4943f588..24b9b1f755 100644 --- a/apps/workbench/app/controllers/collections_controller.rb +++ b/apps/workbench/app/controllers/collections_controller.rb @@ -7,7 +7,7 @@ class CollectionsController < ApplicationController RELATION_LIMIT = 5 def show_pane_list - %w(Files Attributes Metadata Provenance_graph Used_by JSON API) + %w(Files Provenance_graph Used_by Advanced) end def set_persistent @@ -40,6 +40,20 @@ class CollectionsController < ApplicationController end end + def choose + params[:limit] ||= 20 + @objects = Link. + filter([['link_class','=','name'], + ['head_uuid','is_a','arvados#collection']]) + find_objects_for_index + @next_page_href = (next_page_offset and + url_for(offset: next_page_offset, partial: true)) + @name_links = @objects + @objects = Collection. + filter([['uuid','in',@name_links.collect(&:head_uuid)]]) + super + end + def index if params[:search].andand.length.andand > 0 tags = Link.where(any: ['contains', params[:search]]) @@ -120,6 +134,18 @@ class CollectionsController < ApplicationController self.response_body = file_enumerator opts end + def sharing_scopes + ["GET /arvados/v1/collections/#{@object.uuid}", "GET /arvados/v1/collections/#{@object.uuid}/", "GET /arvados/v1/keep_services/accessible"] + end + + def search_scopes + begin + ApiClientAuthorization.filter([['scopes', '=', sharing_scopes]]).results + rescue ArvadosApiClient::AccessForbiddenException + nil + end + end + def show return super if !@object if current_user @@ -142,6 +168,7 @@ class CollectionsController < ApplicationController .where(head_uuid: @object.uuid, tail_uuid: current_user.uuid, link_class: 'resources', name: 'wants') .results.any? + @search_sharing = search_scopes end @prov_svg = ProvenanceHelper::create_provenance_graph(@object.provenance, "provenance_svg", {:request => request, @@ -154,6 +181,35 @@ class CollectionsController < ApplicationController :pdata_only => true}) rescue nil end + def sharing_popup + @search_sharing = search_scopes + respond_to do |format| + format.html + format.js + end + end + + helper_method :download_link + + def download_link + collections_url + "/download/#{@object.uuid}/#{@search_sharing.first.api_token}" + end + + def share + a = ApiClientAuthorization.create(scopes: sharing_scopes) + @search_sharing = search_scopes + render 'sharing_popup' + end + + def unshare + @search_sharing = search_scopes + @search_sharing.each do |s| + s.destroy + end + @search_sharing = search_scopes + render 'sharing_popup' + end + protected def find_usable_token(token_list)