X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/080c940d7a8134a6e277a53b7e45eb27e2b2c87f..728b7ee1f1501e8bf5b5f9c4310d1fb5475ec79e:/services/api/app/controllers/arvados/v1/collections_controller.rb diff --git a/services/api/app/controllers/arvados/v1/collections_controller.rb b/services/api/app/controllers/arvados/v1/collections_controller.rb index 6e77c12a1d..18b88c4d47 100644 --- a/services/api/app/controllers/arvados/v1/collections_controller.rb +++ b/services/api/app/controllers/arvados/v1/collections_controller.rb @@ -15,6 +15,9 @@ class Arvados::V1::CollectionsController < ApplicationController include_trash: { type: 'boolean', required: false, description: "Include collections whose is_trashed attribute is true." }, + include_old_versions: { + type: 'boolean', required: false, description: "Include past collection versions." + }, }) end @@ -23,17 +26,26 @@ class Arvados::V1::CollectionsController < ApplicationController resource_attrs[:portable_data_hash] = loc.to_s resource_attrs.delete :uuid end + resource_attrs.delete :version + resource_attrs.delete :current_version_uuid super end def find_objects_for_index + opts = {} if params[:include_trash] || ['destroy', 'trash', 'untrash'].include?(action_name) - @objects = Collection.readable_by(*@read_users, {include_trash: true}) + opts.update({include_trash: true}) + end + if params[:include_old_versions] || @include_old_versions + opts.update({include_old_versions: true}) end + @objects = Collection.readable_by(*@read_users, opts) if !opts.empty? super end def find_object_by_uuid + @include_old_versions = true + if loc = Keep::Locator.parse(params[:id]) loc.strip_hints! @@ -223,4 +235,17 @@ class Arvados::V1::CollectionsController < ApplicationController @select ||= model_class.selectable_attributes - ["manifest_text", "unsigned_manifest_text"] end end + + def load_filters_param + super + return if !params[:include_old_versions] + @filters = @filters.map do |col, operator, operand| + # Replace uuid filters when including past versions + if col == 'uuid' + ['current_version_uuid', operator, operand] + else + [col, operator, operand] + end + end + end end