Module: Dor::Governable
- Extended by:
- ActiveSupport::Concern
- Includes:
- ActiveFedora::Relationships
- Included in:
- AdminPolicyObject, BasicItem, Collection, Publishable, Set, WorkflowObject
- Defined in:
- lib/dor/models/governable.rb
Instance Method Summary collapse
- #add_collection(collection_or_druid) ⇒ Object
- #can_manage_content?(roles) ⇒ Boolean
- #can_manage_desc_metadata?(roles) ⇒ Boolean
- #can_manage_embargo?(roles) ⇒ Boolean
- #can_manage_item?(roles) ⇒ Boolean
- #can_manage_rights?(roles) ⇒ Boolean
- #can_manage_system_metadata?(roles) ⇒ Boolean
- #can_view_content?(roles) ⇒ Boolean
- #can_view_metadata?(roles) ⇒ Boolean
- #groups_which_manage_content ⇒ Object
- #groups_which_manage_desc_metadata ⇒ Object
- #groups_which_manage_embargo ⇒ Object
- #groups_which_manage_item ⇒ Object
- #groups_which_manage_rights ⇒ Object
- #groups_which_manage_system_metadata ⇒ Object
- #groups_which_view_content ⇒ Object
- #groups_which_view_metadata ⇒ Object
- #initiate_apo_workflow(name) ⇒ Object
- #intersect(arr1, arr2) ⇒ Object
-
#reapplyAdminPolicyObjectDefaults ⇒ Object
set the rights metadata datastream to the content of the APO’s default object rights.
- #remove_collection(collection_or_druid) ⇒ Object
- #reset_to_apo_default ⇒ Object
- #rights ⇒ Object
- #set_read_rights(rights) ⇒ Object
Instance Method Details
#add_collection(collection_or_druid) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/dor/models/governable.rb', line 65 def add_collection(collection_or_druid) collection = case collection_or_druid when String Dor::Collection.find(collection_or_druid) when Dor::Collection collection_or_druid end self.collections << collection self.sets << collection end |
#can_manage_content?(roles) ⇒ Boolean
146 147 148 |
# File 'lib/dor/models/governable.rb', line 146 def can_manage_content? roles intersect roles, groups_which_manage_content end |
#can_manage_desc_metadata?(roles) ⇒ Boolean
140 141 142 |
# File 'lib/dor/models/governable.rb', line 140 def roles intersect roles, end |
#can_manage_embargo?(roles) ⇒ Boolean
152 153 154 |
# File 'lib/dor/models/governable.rb', line 152 def roles intersect roles, end |
#can_manage_item?(roles) ⇒ Boolean
137 138 139 |
# File 'lib/dor/models/governable.rb', line 137 def can_manage_item? roles intersect roles, groups_which_manage_item end |
#can_manage_rights?(roles) ⇒ Boolean
149 150 151 |
# File 'lib/dor/models/governable.rb', line 149 def can_manage_rights? roles intersect roles, groups_which_manage_rights end |
#can_manage_system_metadata?(roles) ⇒ Boolean
143 144 145 |
# File 'lib/dor/models/governable.rb', line 143 def roles intersect roles, end |
#can_view_content?(roles) ⇒ Boolean
155 156 157 |
# File 'lib/dor/models/governable.rb', line 155 def can_view_content? roles intersect roles, groups_which_view_content end |
#can_view_metadata?(roles) ⇒ Boolean
158 159 160 |
# File 'lib/dor/models/governable.rb', line 158 def roles intersect roles, end |
#groups_which_manage_content ⇒ Object
119 120 121 |
# File 'lib/dor/models/governable.rb', line 119 def groups_which_manage_content ['dor-administrator','dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_manage_desc_metadata ⇒ Object
113 114 115 |
# File 'lib/dor/models/governable.rb', line 113 def ['dor-administrator','dor-apo-manager', 'dor-apo-depositor', 'dor-apo-metadata'] end |
#groups_which_manage_embargo ⇒ Object
125 126 127 |
# File 'lib/dor/models/governable.rb', line 125 def ['dor-administrator','dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_manage_item ⇒ Object
110 111 112 |
# File 'lib/dor/models/governable.rb', line 110 def groups_which_manage_item ['dor-administrator','dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_manage_rights ⇒ Object
122 123 124 |
# File 'lib/dor/models/governable.rb', line 122 def groups_which_manage_rights ['dor-administrator','dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_manage_system_metadata ⇒ Object
116 117 118 |
# File 'lib/dor/models/governable.rb', line 116 def ['dor-administrator','dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_view_content ⇒ Object
128 129 130 |
# File 'lib/dor/models/governable.rb', line 128 def groups_which_view_content ['dor-administrator','dor-apo-manager', 'dor-apo-depositor', 'dor-viewer'] end |
#groups_which_view_metadata ⇒ Object
131 132 133 |
# File 'lib/dor/models/governable.rb', line 131 def ['dor-administrator','dor-apo-manager', 'dor-apo-depositor', 'dor-viewer'] end |
#initiate_apo_workflow(name) ⇒ Object
12 13 14 |
# File 'lib/dor/models/governable.rb', line 12 def initiate_apo_workflow(name) self.initialize_workflow(name, 'dor', !self.new_object?) end |
#intersect(arr1, arr2) ⇒ Object
134 135 136 |
# File 'lib/dor/models/governable.rb', line 134 def intersect arr1, arr2 return (arr1 & arr2).length > 0 end |
#reapplyAdminPolicyObjectDefaults ⇒ Object
set the rights metadata datastream to the content of the APO’s default object rights
89 90 91 |
# File 'lib/dor/models/governable.rb', line 89 def reapplyAdminPolicyObjectDefaults rightsMetadata.content=admin_policy_object.datastreams['defaultObjectRights'].content end |
#remove_collection(collection_or_druid) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/dor/models/governable.rb', line 76 def remove_collection(collection_or_druid) collection = case collection_or_druid when String Dor::Collection.find(collection_or_druid) when Dor::Collection collection_or_druid end self.collections.delete(collection) self.sets.delete(collection) end |
#reset_to_apo_default ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/dor/models/governable.rb', line 16 def reset_to_apo_default() = self.rightsMetadata #get the apo for this object apo_druid=obj.identityMetadata.adminPolicy.first apo_obj=Dor::Item.find(apo_druid, :lightweight => true) .content=apo_obj.rightsMetadata.ng_xml end |
#rights ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/dor/models/governable.rb', line 92 def rights return nil unless self.respond_to? :rightsMetadata xml=self.rightsMetadata.ng_xml return nil if xml.search('//rightsMetadata').length != 1 if xml.search('//rightsMetadata/access[@type=\'read\']/machine/group').length == 1 'Stanford' else if xml.search('//rightsMetadata/access[@type=\'read\']/machine/world').length ==1 'World' else if xml.search('//rightsMetadata/access[@type=\'discover\']/machine/none').length == 1 'Dark' else 'None' end end end end |
#set_read_rights(rights) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/dor/models/governable.rb', line 24 def set_read_rights(rights) return if not ['world','stanford','none', 'dark'].include? rights = self.rightsMetadata rights_xml=.ng_xml if(rights_xml.search('//rightsMetadata/access[@type=\'read\']').length==0) raise ('The rights metadata stream doesnt contain an entry for machine read permissions. Consider populating it from the APO before trying to change it.') end rights_xml.search('//rightsMetadata/access[@type=\'discover\']/machine').each do |node| node.children.remove if rights=='dark' world_node=Nokogiri::XML::Node.new('none',rights_xml) node.add_child(world_node) else world_node=Nokogiri::XML::Node.new('world',rights_xml) node.add_child(world_node) end end rights_xml.search('//rightsMetadata/access[@type=\'read\']').each do |node| node.children.remove machine_node=Nokogiri::XML::Node.new('machine',rights_xml) if(rights=='world') world_node=Nokogiri::XML::Node.new(rights,rights_xml) node.add_child(machine_node) machine_node.add_child(world_node) end if rights=='stanford' world_node=Nokogiri::XML::Node.new(rights,rights_xml) node.add_child(machine_node) group_node=Nokogiri::XML::Node.new('group',rights_xml) group_node.content="Stanford" node.add_child(machine_node) machine_node.add_child(group_node) end if rights=='none' or rights == 'dark' none_node=Nokogiri::XML::Node.new('none',rights_xml) node.add_child(machine_node) machine_node.add_child(none_node) end end end |