Class: Hydramata::Group
- Inherits:
-
ActiveFedora::Base
- Object
- ActiveFedora::Base
- Hydramata::Group
show all
- Includes:
- CurationConcern::HumanReadableType, Hydra::AccessControls::Permissions, Sufia::ModelMethods, Sufia::Noid
- Defined in:
- app/repository_models/hydramata/group.rb
Instance Method Summary
collapse
#human_readable_type, #to_solr
Instance Method Details
#add_member(candidate, role = '') ⇒ Object
29
30
31
32
33
34
35
36
|
# File 'app/repository_models/hydramata/group.rb', line 29
def add_member(candidate, role='')
return if(!candidate.is_a?(Person) or self.members.include?(candidate))
self.add_relationship(:has_member, candidate)
self.save!
candidate.add_relationship(:is_member_of, self)
candidate.save!
self.create_role(candidate, role)
end
|
#can_be_member_of_collection?(collection) ⇒ Boolean
51
52
53
|
# File 'app/repository_models/hydramata/group.rb', line 51
def can_be_member_of_collection?(collection)
false
end
|
#create_role(candidate, role) ⇒ Object
55
56
57
58
59
60
61
|
# File 'app/repository_models/hydramata/group.rb', line 55
def create_role(candidate, role)
if role == 'manager'
self.group_edit_membership(candidate)
else
self.group_read_membership(candidate)
end
end
|
#group_edit_membership(candidate) ⇒ Object
63
64
65
66
67
68
69
|
# File 'app/repository_models/hydramata/group.rb', line 63
def group_edit_membership(candidate)
self.read_users.delete(candidate.depositor) if self.read_users.include?(candidate.depositor)
self.permissions_attributes = [{name: candidate.depositor, access: "edit", type: "person"}]
self.save!
rescue ActiveFedora::RecordInvalid => e
errors.add(:title, e.message)
end
|
#group_read_membership(candidate) ⇒ Object
71
72
73
74
75
76
77
|
# File 'app/repository_models/hydramata/group.rb', line 71
def group_read_membership(candidate)
unless self.depositor == candidate.depositor
self.edit_users.delete(candidate.depositor) if self.edit_users.include?(candidate.depositor)
self.permissions_attributes = [{name: candidate.depositor, access: "read", type: "person"}]
self.save!
end
end
|
#is_title_duplicate? ⇒ Boolean
25
26
27
|
# File 'app/repository_models/hydramata/group.rb', line 25
def is_title_duplicate?
Hydramata::Group.where(desc_metadata__title_tesim: self.title).to_a.reject{|r| r == self}.any?
end
|
#remove_member(candidate) ⇒ Object
38
39
40
41
42
43
44
45
|
# File 'app/repository_models/hydramata/group.rb', line 38
def remove_member(candidate)
return unless(self.members.include?(candidate) && (self.depositor != candidate.depositor))
candidate.remove_relationship(:is_member_of, self)
candidate.save!
self.remove_relationship(:has_member, candidate)
self.save!
self.remove_member_privileges(candidate)
end
|
#remove_member_privileges(candidate) ⇒ Object
79
80
81
82
83
84
85
|
# File 'app/repository_models/hydramata/group.rb', line 79
def remove_member_privileges(candidate)
unless self.depositor == candidate.depositor
self.edit_users = self.edit_users - [candidate.depositor] if self.edit_users.include?(candidate.depositor)
self.read_users = self.read_users - [candidate.depositor] if self.read_users.include?(candidate.depositor)
self.save!
end
end
|
#title_is_unique ⇒ Object
21
22
23
|
# File 'app/repository_models/hydramata/group.rb', line 21
def title_is_unique
errors.add(:title, "has already been taken") if is_title_duplicate?
end
|
#to_s ⇒ Object
47
48
49
|
# File 'app/repository_models/hydramata/group.rb', line 47
def to_s
title
end
|