Merge branch '3099-spinner-assets' closes #3099
[arvados.git] / apps / workbench / app / models / arvados_base.rb
index 590f6282e9cff9b8090a572d0890ce1f3ad2dd16..6d427fdda1114658f09b3ed054e1856636a5cc1e 100644 (file)
@@ -1,6 +1,7 @@
 class ArvadosBase < ActiveRecord::Base
   self.abstract_class = true
   attr_accessor :attribute_sortkey
+  attr_accessor :create_params
 
   def self.arvados_api_client
     ArvadosApiClient.new_or_current
@@ -29,8 +30,9 @@ class ArvadosBase < ActiveRecord::Base
       end
   end
 
-  def initialize raw_params={}
+  def initialize raw_params={}, create_params={}
     super self.class.permit_attribute_params(raw_params)
+    @create_params = create_params
     @attribute_sortkey ||= {
       'id' => nil,
       'name' => '000',
@@ -54,7 +56,7 @@ class ArvadosBase < ActiveRecord::Base
   end
 
   def self.columns
-    return @columns unless @columns.nil?
+    return @columns if @columns.andand.any?
     @columns = []
     @attribute_info ||= {}
     schema = arvados_api_client.discovery[:schemas][self.to_s.to_sym]
@@ -148,8 +150,10 @@ class ArvadosBase < ActiveRecord::Base
     ActionController::Parameters.new(raw_params).permit!
   end
 
-  def self.create raw_params={}
-    super(permit_attribute_params(raw_params))
+  def self.create raw_params={}, create_params={}
+    x = super(permit_attribute_params(raw_params))
+    x.create_params = create_params
+    x
   end
 
   def update_attributes raw_params={}
@@ -168,6 +172,7 @@ class ArvadosBase < ActiveRecord::Base
       obdata.delete :uuid
       resp = arvados_api_client.api(self.class, '/' + uuid, postdata)
     else
+      postdata.merge!(@create_params) if @create_params
       resp = arvados_api_client.api(self.class, '', postdata)
     end
     return false if !resp[:etag] || !resp[:uuid]
@@ -290,11 +295,15 @@ class ArvadosBase < ActiveRecord::Base
     self.class.to_s.underscore.humanize
   end
 
+  def self.class_for_display
+    self.to_s.underscore.humanize
+  end
+
   def self.creatable?
     current_user
   end
 
-  def self.goes_in_folders?
+  def self.goes_in_projects?
     false
   end