X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/62a0bbe9c1f6e3376b25d0f415302eb7dcdf55f3..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 939ca21257..3803d37691 100644 --- a/services/api/app/controllers/arvados/v1/collections_controller.rb +++ b/services/api/app/controllers/arvados/v1/collections_controller.rb @@ -1,7 +1,22 @@ +# 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 + 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 if resource_attrs[:uuid] and (loc = Keep::Locator.parse(resource_attrs[:uuid])) @@ -12,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 @@ -44,24 +59,6 @@ class Arvados::V1::CollectionsController < ApplicationController 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