X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/747aa7b4d080b4ea95bf7d6d8643c43e70966f33..70f1004b17fac3c772c8f938b5a72ff3a3ebc67a:/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..a66b3903d6 100644 --- a/apps/workbench/app/models/arvados_base.rb +++ b/apps/workbench/app/models/arvados_base.rb @@ -109,6 +109,10 @@ class ArvadosBase < ActiveRecord::Base new.private_reload(hash) end + def self.find?(*args) + find(*args) rescue nil + end + def self.order(*args) ArvadosResourceList.new(self).order(*args) end @@ -269,8 +273,9 @@ class ArvadosBase < ActiveRecord::Base uuid end - def dup - super.forget_uuid! + def initialize_copy orig + super + forget_uuid! end def attributes_for_display @@ -282,13 +287,17 @@ class ArvadosBase < ActiveRecord::Base end def class_for_display - self.class.to_s + self.class.to_s.underscore.humanize end def self.creatable? current_user end + def self.goes_in_projects? + 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 @@ -338,8 +349,12 @@ 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) || uuid + (name if self.respond_to? :name) || default_name end def content_summary @@ -350,6 +365,27 @@ class ArvadosBase < ActiveRecord::Base friendly_link_name end + def self.default_name + 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 + "New #{class_for_display.downcase}" + else + uuid + end + end + def owner ArvadosBase.find(owner_uuid) rescue nil end