2760: Exclude system objects like VMs and repos from folder behavior.
[arvados.git] / apps / workbench / app / models / arvados_base.rb
index 1ad0230512318bf114e6e30de95d9dc1eb21371f..2c2963ca595aa00a35e6d5f8e08619ea061eeb57 100644 (file)
@@ -289,11 +289,16 @@ class ArvadosBase < ActiveRecord::Base
     current_user
   end
 
+  def self.goes_in_folders?
+    false
+  end
+
   def editable?
     (current_user and current_user.is_active and
      (current_user.is_admin or
       current_user.uuid == self.owner_uuid or
-      new_record?))
+      new_record? or
+      (writable_by.include? current_user.uuid rescue false)))
   end
 
   def attribute_editable?(attr)
@@ -301,12 +306,10 @@ class ArvadosBase < ActiveRecord::Base
       false
     elsif not (current_user.andand.is_active)
       false
-    elsif "uuid owner_uuid".index(attr.to_s) or current_user.is_admin
+    elsif attr == 'uuid'
       current_user.is_admin
     else
-      current_user.uuid == self.owner_uuid or
-        current_user.uuid == self.uuid or
-        new_record?
+      editable?
     end
   end
 
@@ -351,6 +354,10 @@ class ArvadosBase < ActiveRecord::Base
     friendly_link_name
   end
 
+  def owner
+    ArvadosBase.find(owner_uuid) rescue nil
+  end
+
   protected
 
   def forget_uuid!