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
@objects = Collection.
filter([['uuid','in',@name_links.collect(&:head_uuid)]])
+
preload_links_for_objects (@collections.to_a + @objects.to_a)
super
end
def index
+ # API server index doesn't return manifest_text by default, but our
+ # callers want it unless otherwise specified.
+ @select ||= Collection.columns.map(&:name)
+ base_search = Collection.select(@select)
if params[:search].andand.length.andand > 0
tags = Link.where(any: ['contains', params[:search]])
- @collections = (Collection.where(uuid: tags.collect(&:head_uuid)) |
- Collection.where(any: ['contains', params[:search]])).
+ @collections = (base_search.where(uuid: tags.collect(&:head_uuid)) |
+ base_search.where(any: ['contains', params[:search]])).
uniq { |c| c.uuid }
else
if params[:limit]
offset = 0
end
- @collections = Collection.limit(limit).offset(offset)
+ @collections = base_search.limit(limit).offset(offset)
end
@links = Link.limit(1000).
where(head_uuid: @collections.collect(&:uuid))
end
if usable_token.nil?
return # Response already rendered.
- elsif params[:file].nil? or not file_in_collection?(coll, params[:file])
+ elsif params[:file].nil? or not coll.manifest.has_file?(params[:file])
return render_not_found
end
opts = params.merge(arvados_api_token: usable_token)
return nil
end
- def file_in_collection?(collection, filename)
- target = CollectionsHelper.file_path(File.split(filename))
- collection.files.each do |file_spec|
- return true if (CollectionsHelper.file_path(file_spec) == target)
- end
- false
- end
-
def file_enumerator(opts)
FileStreamer.new opts
end