Module: Dor::Governable
- Extended by:
- ActiveSupport::Concern
- Included in:
- Abstract
- Defined in:
- lib/dor/models/concerns/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
-
#default_workflow_lane ⇒ String
Returns the default lane_id from the item’s APO.
- #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
- #unshelve_and_unpublish ⇒ Object
Instance Method Details
#add_collection(collection_or_druid) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/dor/models/concerns/governable.rb', line 54 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 collections << collection sets << collection end |
#can_manage_content?(roles) ⇒ Boolean
150 151 152 |
# File 'lib/dor/models/concerns/governable.rb', line 150 def can_manage_content?(roles) intersect roles, groups_which_manage_content end |
#can_manage_desc_metadata?(roles) ⇒ Boolean
142 143 144 |
# File 'lib/dor/models/concerns/governable.rb', line 142 def (roles) intersect roles, end |
#can_manage_embargo?(roles) ⇒ Boolean
158 159 160 |
# File 'lib/dor/models/concerns/governable.rb', line 158 def (roles) intersect roles, end |
#can_manage_item?(roles) ⇒ Boolean
138 139 140 |
# File 'lib/dor/models/concerns/governable.rb', line 138 def can_manage_item?(roles) intersect roles, groups_which_manage_item end |
#can_manage_rights?(roles) ⇒ Boolean
154 155 156 |
# File 'lib/dor/models/concerns/governable.rb', line 154 def can_manage_rights?(roles) intersect roles, groups_which_manage_rights end |
#can_manage_system_metadata?(roles) ⇒ Boolean
146 147 148 |
# File 'lib/dor/models/concerns/governable.rb', line 146 def (roles) intersect roles, end |
#can_view_content?(roles) ⇒ Boolean
162 163 164 |
# File 'lib/dor/models/concerns/governable.rb', line 162 def can_view_content?(roles) intersect roles, groups_which_view_content end |
#can_view_metadata?(roles) ⇒ Boolean
166 167 168 |
# File 'lib/dor/models/concerns/governable.rb', line 166 def (roles) intersect roles, end |
#default_workflow_lane ⇒ String
Returns the default lane_id from the item’s APO. Will return ‘default’ if the item does not have
and APO, or if the APO does not have a default_lane
20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/dor/models/concerns/governable.rb', line 20 def default_workflow_lane return 'default' if admin_policy_object.nil? # TODO: log warning? admin_md = admin_policy_object.datastreams['administrativeMetadata'] return 'default' unless admin_md.respond_to?(:default_workflow_lane) # Some APOs don't have this datastream lane = admin_md.default_workflow_lane return 'default' if lane.blank? lane end |
#groups_which_manage_content ⇒ Object
114 115 116 |
# File 'lib/dor/models/concerns/governable.rb', line 114 def groups_which_manage_content ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_manage_desc_metadata ⇒ Object
106 107 108 |
# File 'lib/dor/models/concerns/governable.rb', line 106 def ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor', 'dor-apo-metadata'] end |
#groups_which_manage_embargo ⇒ Object
122 123 124 |
# File 'lib/dor/models/concerns/governable.rb', line 122 def ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_manage_item ⇒ Object
102 103 104 |
# File 'lib/dor/models/concerns/governable.rb', line 102 def groups_which_manage_item ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_manage_rights ⇒ Object
118 119 120 |
# File 'lib/dor/models/concerns/governable.rb', line 118 def groups_which_manage_rights ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_manage_system_metadata ⇒ Object
110 111 112 |
# File 'lib/dor/models/concerns/governable.rb', line 110 def ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor'] end |
#groups_which_view_content ⇒ Object
126 127 128 |
# File 'lib/dor/models/concerns/governable.rb', line 126 def groups_which_view_content ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor', 'dor-viewer', 'sdr-viewer'] end |
#groups_which_view_metadata ⇒ Object
130 131 132 |
# File 'lib/dor/models/concerns/governable.rb', line 130 def ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor', 'dor-viewer', 'sdr-viewer'] end |
#initiate_apo_workflow(name) ⇒ Object
13 14 15 |
# File 'lib/dor/models/concerns/governable.rb', line 13 def initiate_apo_workflow(name) create_workflow(name, !self.new_record?) end |
#intersect(arr1, arr2) ⇒ Object
134 135 136 |
# File 'lib/dor/models/concerns/governable.rb', line 134 def intersect(arr1, arr2) (arr1 & arr2).length > 0 end |
#reapplyAdminPolicyObjectDefaults ⇒ Object
set the rights metadata datastream to the content of the APO’s default object rights
80 81 82 |
# File 'lib/dor/models/concerns/governable.rb', line 80 def reapplyAdminPolicyObjectDefaults rightsMetadata.content = admin_policy_object.datastreams['defaultObjectRights'].content end |
#remove_collection(collection_or_druid) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/dor/models/concerns/governable.rb', line 66 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 collections.delete(collection) sets.delete(collection) end |
#reset_to_apo_default ⇒ Object
32 33 34 |
# File 'lib/dor/models/concerns/governable.rb', line 32 def reset_to_apo_default rightsMetadata.content = admin_policy_object.rightsMetadata.ng_xml end |
#rights ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/dor/models/concerns/governable.rb', line 84 def rights return nil unless self.respond_to? :rightsMetadata return nil if rightsMetadata.nil? xml = rightsMetadata.ng_xml return nil if xml.search('//rightsMetadata').length != 1 # ORLY? if xml.search('//rightsMetadata/access[@type=\'read\']/machine/group').length == 1 'Stanford' elsif xml.search('//rightsMetadata/access[@type=\'read\']/machine/world').length == 1 'World' elsif xml.search('//rightsMetadata/access[@type=\'discover\']/machine/none').length == 1 'Dark' else 'None' end end |
#set_read_rights(rights) ⇒ Object
36 37 38 39 |
# File 'lib/dor/models/concerns/governable.rb', line 36 def set_read_rights(rights) rightsMetadata.set_read_rights(rights) unshelve_and_unpublish if rights == 'dark' end |
#unshelve_and_unpublish ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/dor/models/concerns/governable.rb', line 41 def unshelve_and_unpublish if self.respond_to? :contentMetadata content_ds = datastreams['contentMetadata'] unless content_ds.nil? content_ds.ng_xml.xpath('/contentMetadata/resource//file').each_with_index do |file_node, index| content_ds.ng_xml_will_change! if index == 0 file_node['publish'] = 'no' file_node['shelve'] = 'no' end end end end |