X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9048749c1419cf5e130a4b5d992a2b9c5bafd9cf..68bdf4cbb1d2c22d689b1d74a1c2a77415921b4d:/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 6c3589736e..3803d37691 100644 --- a/services/api/app/controllers/arvados/v1/collections_controller.rb +++ b/services/api/app/controllers/arvados/v1/collections_controller.rb @@ -1,10 +1,21 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require "arvados/keep" +require "trashable" class Arvados::V1::CollectionsController < ApplicationController include DbCurrentTime - - def self.limit_index_columns_read - ["manifest_text"] + include TrashableController + + def self._index_requires_parameters + (super rescue {}). + merge({ + include_trash: { + type: 'boolean', required: false, description: "Include collections whose is_trashed attribute is true." + }, + }) end def create @@ -16,8 +27,8 @@ class Arvados::V1::CollectionsController < ApplicationController end def find_objects_for_index - if params[:include_trash] || ['destroy', 'trash'].include?(action_name) - @objects = Collection.unscoped.readable_by(*@read_users) + if params[:include_trash] || ['destroy', 'trash', 'untrash'].include?(action_name) + @objects = Collection.readable_by(*@read_users, {include_trash: true, query_on: Collection.unscoped}) end super end @@ -40,30 +51,14 @@ class Arvados::V1::CollectionsController < ApplicationController def show if @object.is_a? Collection + # Omit unsigned_manifest_text + @select ||= model_class.selectable_attributes - ["unsigned_manifest_text"] super else send_json @object end end - def destroy - if !@object.is_trashed - @object.update_attributes!(trash_at: db_current_time) - end - earliest_delete = (@object.trash_at + - Rails.configuration.blob_signature_ttl.seconds) - if @object.delete_at > earliest_delete - @object.update_attributes!(delete_at: earliest_delete) - end - show - end - - def trash - if !@object.is_trashed - @object.update_attributes!(trash_at: db_current_time) - end - show - end def find_collections(visited, sp, &b) case sp @@ -212,8 +207,8 @@ class Arvados::V1::CollectionsController < ApplicationController def load_limit_offset_order_params *args super if action_name == 'index' - # Omit manifest_text from index results unless expressly selected. - @select ||= model_class.selectable_attributes - ["manifest_text"] + # Omit manifest_text and unsigned_manifest_text from index results unless expressly selected. + @select ||= model_class.selectable_attributes - ["manifest_text", "unsigned_manifest_text"] end end end