X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/605522fc29649de26b7038e73339ffb35d12768e..f12986389693d4155847204210d9c84492ac6837:/apps/workbench/app/models/arvados_base.rb diff --git a/apps/workbench/app/models/arvados_base.rb b/apps/workbench/app/models/arvados_base.rb index cb457014aa..6d427fdda1 100644 --- a/apps/workbench/app/models/arvados_base.rb +++ b/apps/workbench/app/models/arvados_base.rb @@ -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] @@ -273,8 +278,9 @@ class ArvadosBase < ActiveRecord::Base uuid end - def dup - super.forget_uuid! + def initialize_copy orig + super + forget_uuid! end def attributes_for_display @@ -289,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 @@ -348,6 +358,10 @@ class ArvadosBase < ActiveRecord::Base resource_class end + def resource_param_name + self.class.to_s.underscore + end + def friendly_link_name (name if self.respond_to? :name) || default_name end @@ -364,6 +378,14 @@ class ArvadosBase < ActiveRecord::Base self.to_s.underscore.humanize end + def controller + (self.class.to_s.pluralize + 'Controller').constantize + end + + def controller_name + self.class.to_s.tableize + end + # Placeholder for name when name is missing or empty def default_name if self.respond_to? :name