X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/1c45ed6a43b01a4f216cf8877b35d9ad18e1c5b5..84decc8949fc51ec2eaf906fc2c4cbbb3df807dd:/apps/workbench/app/models/arvados_resource_list.rb diff --git a/apps/workbench/app/models/arvados_resource_list.rb b/apps/workbench/app/models/arvados_resource_list.rb index f6bcaae9b1..dedd18c81d 100644 --- a/apps/workbench/app/models/arvados_resource_list.rb +++ b/apps/workbench/app/models/arvados_resource_list.rb @@ -1,4 +1,5 @@ class ArvadosResourceList + include ArvadosApiClientHelper include Enumerable def initialize resource_class=nil @@ -53,7 +54,7 @@ class ArvadosResourceList end cond.keys.select { |x| x.match /_kind$/ }.each do |kind_key| if cond[kind_key].is_a? Class - cond = cond.merge({ kind_key => 'arvados#' + $arvados_api_client.class_kind(cond[kind_key]) }) + cond = cond.merge({ kind_key => 'arvados#' + arvados_api_client.class_kind(cond[kind_key]) }) end end api_params = { @@ -65,8 +66,8 @@ class ArvadosResourceList api_params[:offset] = @offset if @offset api_params[:order] = @orderby_spec if @orderby_spec api_params[:filters] = @filters if @filters - res = $arvados_api_client.api @resource_class, '', api_params - @results = $arvados_api_client.unpack_api_response res + res = arvados_api_client.api @resource_class, '', api_params + @results = arvados_api_client.unpack_api_response res self end @@ -144,10 +145,15 @@ class ArvadosResourceList results.links if results.respond_to? :links end - def links_for item_or_uuid, link_class=nil + # Return links provided with API response that point to the + # specified object, and have the specified link_class. If link_class + # is false or omitted, return all links pointing to the specified + # object. + def links_for item_or_uuid, link_class=false + return [] if !result_links unless @links_for_uuid @links_for_uuid = {} - results.links.each do |link| + result_links.each do |link| if link.respond_to? :head_uuid @links_for_uuid[link.head_uuid] ||= [] @links_for_uuid[link.head_uuid] << link @@ -160,10 +166,11 @@ class ArvadosResourceList uuid = item_or_uuid end (@links_for_uuid[uuid] || []).select do |link| - link.link_class == link_class + link_class == false or link.link_class == link_class end end + # Note: this arbitrarily chooses one of (possibly) multiple names. def name_for item_or_uuid links_for(item_or_uuid, 'name').first.andand.name end