X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a3222e35cda68c8e48a17921c33ac37ecb5c3bac..7d9cfb6e0716239f996bae054bc9345a663e0b7e:/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 d38ca7822d..e0e93b9e2d 100644 --- a/apps/workbench/app/models/arvados_base.rb +++ b/apps/workbench/app/models/arvados_base.rb @@ -167,7 +167,9 @@ class ArvadosBase < ActiveRecord::Base def save obdata = {} self.class.columns.each do |col| - obdata[col.name.to_sym] = self.send(col.name.to_sym) + unless self.send(col.name.to_sym).nil? and !self.changed.include?(col.name) + obdata[col.name.to_sym] = self.send(col.name.to_sym) + end end obdata.delete :id postdata = { self.class.to_s.underscore => obdata } @@ -316,16 +318,22 @@ class ArvadosBase < ActiveRecord::Base false end + # can this class of object be copied into a project? + # override to false on indivudal model classes for which this should not be true + def self.copies_to_projects? + self.goes_in_projects? + 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? or - (writable_by.include? current_user.uuid rescue false))) + (writable_by.include? current_user.uuid rescue false))) or false end 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) + if %w(created_at modified_at modified_by_user_uuid modified_by_client_uuid updated_at).include? attr.to_s false elsif not (current_user.andand.is_active) false @@ -371,7 +379,7 @@ class ArvadosBase < ActiveRecord::Base self.class.to_s.underscore end - def friendly_link_name + def friendly_link_name lookup=nil (name if self.respond_to? :name) || default_name end