Skip to content
Snippets Groups Projects
Commit f60b2b8b authored by Mateus Rambo Strey's avatar Mateus Rambo Strey
Browse files

fix collection owner

parent 435d524c
No related branches found
No related tags found
No related merge requests found
......@@ -26,6 +26,7 @@ class CollectionBuilder
name: args['name'],
id: args['@rid']
)
obj.owner = collection_repository.owner(args['@rid'])
obj.created_at = DateTime.strptime(args['created_at'], "%Y-%m-%d %H:%M:%S") unless args['created_at'].nil?
obj.last_modified = DateTime.strptime(args['last_modified'], "%Y-%m-%d %H:%M:%S") unless args['last_modified'].nil?
obj
......
......@@ -29,7 +29,7 @@ class CollectionsController < ApplicationController
@collection = Collection.new(collection_params)
# let user or institution as owner
@collection.owner = (params[:collection][:institution].blank?) ? current_user : params[:collection][:institution]
@collection.owner = (params[:collection][:institution].blank?) ? current_user : institution_repository.find(params[:collection][:institution])
respond_to do |format|
if collection_repository.create @collection
......
class Validators::CollectionOwnerValidator < ActiveModel::Validator
def validate(record)
if !record.owner.is_a?(User)
record.errors.add :base, 'The owner must be an User'
unless record.owner.is_a?(User) || record.owner.is_a?(Institution)
record.errors.add :base, 'The owner must be an User or an Institution'
end
end
end
\ No newline at end of file
end
......@@ -35,13 +35,16 @@ module OrientDb
def create(object)
super(object)
create_edge "BelongsTo", object.id, owner_id(object)
# create relationship
create_edge "BelongsTo", object.id, owner_id(object.owner)
object
end
def destroy(object)
super(object)
destroy_edge "BelongsTo", object.id, owner_id(object)
destroy_edge "BelongsTo", object.id, owner_id(object.owner)
end
##
......@@ -82,10 +85,25 @@ module OrientDb
hash.merge('name' => object.name) # forces name property for bookmarks
end
# return owner of collection rid
def owner(collection_id)
edge = get_edges("BelongsTo", "out", collection_id).first
owner = get_by_rid(edge["in"])
if owner['@class'] == "User"
return user_repository.find owner['p_id']
elsif owner['@class'] == "Institution"
return institution_repository.find owner['@rid']
end
return []
end
private
def owner_id(object)
(object.owner.class == User) ? object.owner.rid : institution_repository.find(object.owner).id
def owner_id(owner)
(owner.class == User) ? owner.rid : owner.id
end
def odb_class
......
......@@ -7,7 +7,7 @@
<h4 class="media-heading"><%= collection.name %></h4>
<!-- <span class="glyphicon glyphicon-eye-open">200&nbsp;</span>
<span class="glyphicon glyphicon-star">4,5&nbsp;</span> -->
<span><a><%= 'Por '+ collection.owner.name unless collection.owner.name.blank? %>&nbsp;</a></span>
<span><a><%= 'Por '+ collection.owner.name unless collection.owner.name.blank? %></a></span>
</div>
</div>
<% end %>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment