projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '2762-owner-uuid-integrity'
[arvados.git]
/
services
/
api
/
app
/
models
/
link.rb
diff --git
a/services/api/app/models/link.rb
b/services/api/app/models/link.rb
index 1d4e13d18618eddb14a98aac80aa60f591b5c58a..af3918551e441a2ccaea47ea67e19e8f23a73b1f 100644
(file)
--- a/
services/api/app/models/link.rb
+++ b/
services/api/app/models/link.rb
@@
-1,5
+1,5
@@
class Link < ArvadosModel
class Link < ArvadosModel
- include
Assign
Uuid
+ include
Has
Uuid
include KindAndEtag
include CommonApiTemplate
serialize :properties, Hash
include KindAndEtag
include CommonApiTemplate
serialize :properties, Hash
@@
-8,19
+8,16
@@
class Link < ArvadosModel
after_update :maybe_invalidate_permissions_cache
after_create :maybe_invalidate_permissions_cache
after_destroy :maybe_invalidate_permissions_cache
after_update :maybe_invalidate_permissions_cache
after_create :maybe_invalidate_permissions_cache
after_destroy :maybe_invalidate_permissions_cache
-
- attr_accessor :head
- attr_accessor :tail
+ attr_accessor :head_kind, :tail_kind
+ validate :name_link_has_valid_name
api_accessible :user, extend: :common do |t|
api_accessible :user, extend: :common do |t|
- t.add :tail_kind
t.add :tail_uuid
t.add :link_class
t.add :name
t.add :tail_uuid
t.add :link_class
t.add :name
- t.add :head_kind
t.add :head_uuid
t.add :head_uuid
- t.add :head
, :if => :hea
d
- t.add :tail
, :if => :tail
+ t.add :head
_kin
d
+ t.add :tail
_kind
t.add :properties
end
t.add :properties
end
@@
-29,6
+26,18
@@
class Link < ArvadosModel
super
end
super
end
+ def head_kind
+ if k = ArvadosModel::resource_class_for_uuid(head_uuid)
+ k.kind
+ end
+ end
+
+ def tail_kind
+ if k = ArvadosModel::resource_class_for_uuid(tail_uuid)
+ k.kind
+ end
+ end
+
protected
def permission_to_attach_to_objects
protected
def permission_to_attach_to_objects
@@
-43,7
+52,7
@@
class Link < ArvadosModel
# All users can grant permissions on objects they own
head_obj = self.class.
# All users can grant permissions on objects they own
head_obj = self.class.
-
kind_class(self.head_kin
d).
+
resource_class_for_uuid(self.head_uui
d).
where('uuid=?',head_uuid).
first
if head_obj
where('uuid=?',head_uuid).
first
if head_obj
@@
-73,4
+82,14
@@
class Link < ArvadosModel
User.invalidate_permissions_cache
end
end
User.invalidate_permissions_cache
end
end
+
+ def name_link_has_valid_name
+ if link_class == 'name'
+ unless name.is_a? String and !name.empty?
+ errors.add('name', 'must be a non-empty string')
+ end
+ else
+ true
+ end
+ end
end
end