9587: expose untrash api
authorradhika <radhika@curoverse.com>
Wed, 31 May 2017 19:03:53 +0000 (15:03 -0400)
committerradhika <radhika@curoverse.com>
Wed, 31 May 2017 19:03:53 +0000 (15:03 -0400)
apps/workbench/app/controllers/trash_items_controller.rb
apps/workbench/app/models/collection.rb
services/api/app/controllers/arvados/v1/collections_controller.rb
services/api/config/routes.rb

index 5190474e903b7f0be113aec42d12ae449865bdd9..7271fc179801a545be4ada1cbad100fc3a280dfb 100644 (file)
@@ -77,9 +77,9 @@ class TrashItemsController < ApplicationController
 
     updates = {trash_at: nil}
 
-    params[:selection].collect { |uuid| ArvadosBase.find uuid }.each do |item|
-      item.update_attributes updates
-      @untrashed_uuids << item.uuid
+    Collection.include_trash(1).where(uuid: params[:selection]).each do |c|
+      c.untrash
+      @untrashed_uuids << c.uuid
     end
 
     respond_to do |format|
index ea81ad8c0a7588edc00062585d99ba9fa116035f..305ea015306fe898c97bd16b443a13d9ff230781 100644 (file)
@@ -98,4 +98,7 @@ class Collection < ArvadosBase
     [ 'description' ]
   end
 
+  def untrash
+    arvados_api_client.api(self.class, "/#{self.uuid}/untrash", {})
+  end
 end
index 8ba7925b288e7f4b3b03d7bd1277b9a1e21f1e2f..73a7e09c5e69cdd6447d91f1e9d0907c97d143ce 100644 (file)
@@ -12,7 +12,7 @@ class Arvados::V1::CollectionsController < ApplicationController
   end
 
   def find_objects_for_index
-    if params[:include_trash] || ['destroy', 'trash'].include?(action_name)
+    if params[:include_trash] || ['destroy', 'trash', 'untrash'].include?(action_name)
       @objects = Collection.readable_by(*@read_users).unscoped
     end
     super
@@ -63,6 +63,15 @@ class Arvados::V1::CollectionsController < ApplicationController
     show
   end
 
+  def untrash
+    if @object.is_trashed
+      @object.update_attributes!(trash_at: nil)
+    else
+      raise InvalidStateTransitionError
+    end
+    show
+  end
+
   def find_collections(visited, sp, &b)
     case sp
     when ArvadosModel
index 77e5372a15423686d3597095c455d90513779bc9..87c4d91757a9daf9d086b56bf6ffcb0f6066cc71 100644 (file)
@@ -21,6 +21,7 @@ Server::Application.routes.draw do
         get 'provenance', on: :member
         get 'used_by', on: :member
         post 'trash', on: :member
+        post 'untrash', on: :member
       end
       resources :groups do
         get 'contents', on: :collection