X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/facb17a2885e6b6d3e998e15862a3c6e970e8cf1..0b4f867ef14af38c07b910643fbe8cc6a93e6bb6:/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 7d8603782e..33e107e369 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', @@ -144,8 +146,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={} @@ -164,6 +168,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] @@ -289,6 +294,10 @@ 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 @@ -297,13 +306,15 @@ class ArvadosBase < ActiveRecord::Base (writable_by.include? current_user.uuid rescue false))) end - def attribute_editable?(attr) + def attribute_editable?(attr, ever=nil) if "created_at modified_at modified_by_user_uuid modified_by_client_uuid updated_at".index(attr.to_s) false elsif not (current_user.andand.is_active) false elsif attr == 'uuid' current_user.is_admin + elsif ever + true else editable? end