X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d02c4efcfdbe8f21fba895749988b14b7db41310..ef47dfeb871015d9da6d5e2e0a04100c2e9e8eee:/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 9229cfcf7c..1a0da6424a 100644 --- a/apps/workbench/app/models/arvados_base.rb +++ b/apps/workbench/app/models/arvados_base.rb @@ -85,6 +85,11 @@ class ArvadosBase < ActiveRecord::Base raise 'argument to find() must be a uuid string. Acceptable formats: warehouse locator or string with format xxxxx-xxxxx-xxxxxxxxxxxxxxx' end + if self == ArvadosBase + # Determine type from uuid and defer to the appropriate subclass. + return resource_class_for_uuid(uuid).find(uuid, opts) + end + # Only do one lookup on the API side per {class, uuid, workbench # request} unless {cache: false} is given via opts. cache_key = "request_#{Thread.current.object_id}_#{self.to_s}_#{uuid}" @@ -261,7 +266,8 @@ class ArvadosBase < ActiveRecord::Base def editable? (current_user and current_user.is_active and (current_user.is_admin or - current_user.uuid == self.owner_uuid)) + current_user.uuid == self.owner_uuid or + new_record?)) end def attribute_editable?(attr) @@ -272,7 +278,9 @@ class ArvadosBase < ActiveRecord::Base elsif "uuid owner_uuid".index(attr.to_s) or current_user.is_admin current_user.is_admin else - current_user.uuid == self.owner_uuid or current_user.uuid == self.uuid + current_user.uuid == self.owner_uuid or + current_user.uuid == self.uuid or + new_record? end end @@ -310,7 +318,7 @@ class ArvadosBase < ActiveRecord::Base end def content_summary - self.class.to_s + self.class_for_display end def selection_label