show cli update example on generic object#get page
[arvados.git] / apps / workbench / app / models / arvados_base.rb
index 6da4eeda597c1d5cf9f6061ac4f90de13ae32da4..267a4a9133ef1c9b5c05372488faa349d0ae332e 100644 (file)
@@ -117,6 +117,17 @@ class ArvadosBase < ActiveRecord::Base
   def save!
     self.save or raise Exception.new("Save failed")
   end
+
+  def destroy
+    if etag || uuid
+      postdata = { '_method' => 'DELETE' }
+      resp = $arvados_api_client.api(self.class, '/' + uuid, postdata)
+      resp[:etag] && resp[:uuid] && resp
+    else
+      true
+    end
+  end
+      
   def links(*args)
     o = {}
     o.merge!(args.pop) if args[-1].is_a? Hash
@@ -193,6 +204,10 @@ class ArvadosBase < ActiveRecord::Base
     }
   end
 
+  def self.creatable?
+    current_user
+  end
+
   def editable?
     (current_user and
      (current_user.is_admin or
@@ -205,7 +220,7 @@ class ArvadosBase < ActiveRecord::Base
     elsif "uuid owner".index(attr.to_s)
       current_user and current_user.is_admin
     else
-      true
+      current_user and current_user.uuid == owner
     end
   end
 
@@ -246,7 +261,11 @@ class ArvadosBase < ActiveRecord::Base
     self
   end
 
-  def current_user
+  def self.current_user
+    Thread.current[:user] ||= User.current if Thread.current[:arvados_api_token]
     Thread.current[:user]
   end
+  def current_user
+    self.class.current_user
+  end
 end