dor-services 5.29.0 → 5.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a6c61cecf3d248803eae00ed5d38ff6777274637
4
- data.tar.gz: a54d41fcd06b9e1ddfa27901d1b60a255b687eb3
3
+ metadata.gz: 89a45fc0d4d2b861d2a63f35501cab481ac19886
4
+ data.tar.gz: 4a2814c6b8dbabb5b8d9e08ff99f3a7e13ae2498
5
5
  SHA512:
6
- metadata.gz: 73c5d62258abc20a79bc4bf1fe4eedbaa1ea6e089171ef9d62a80fd5de792d8f2e188c8fefcb3dafacc550cd40617d1fd4fefe091a5bfa857b06dca83756501c
7
- data.tar.gz: bafc0afb99e3ef8186bcd6613421fd9bf48aa22c8ef1e5a57203215f0d2950cfa69d356b070331e1f2a21788d2e36bf1bf0d7c8475af726b002dab1bfe6094c8
6
+ metadata.gz: a47c637d3a5f2b02b36385e9bf9f632b15fe1f36c498fe2c73d84ec904c973deafca8738b7c3df77c8ede4156cb73b486d5704906b5ea563ac2ae55cb3798941
7
+ data.tar.gz: 542ff047ac905c08258ab5c5ce676cbdc68ff9b7e7113ec8c15d7f8e3f9183199a2a5773094e8a5cdb923aaf5b86a0b0adeb6a3ab85c98da5d59456b924caea0
@@ -0,0 +1,29 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIE9zCCAt8CCQCcUJVDTu7rTjANBgkqhkiG9w0BAQUFADCBvzELMAkGA1UEBhMC
3
+ VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExETAPBgNVBAcTCFN0YW5mb3JkMRwwGgYD
4
+ VQQKExNTdGFuZm9yZCBVbml2ZXJzaXR5MRIwEAYDVQQLEwlMaWJyYXJpZXMxJTAj
5
+ BgNVBAMTHFNVTCBET1IgKGRldi90ZXN0KSBhY2Nlc3MgQ0ExLzAtBgkqhkiG9w0B
6
+ CQEWIHN1bC13ZWJtYXN0ZXJAbGlzdHMuc3RhbmZvcmQuZWR1MB4XDTEyMDkyNjE1
7
+ NTQzNVoXDTIyMDkyNDE1NTQzNVowgboxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpD
8
+ YWxpZm9ybmlhMREwDwYDVQQHEwhTdGFuZm9yZDEcMBoGA1UEChMTU3RhbmZvcmQg
9
+ VW5pdmVyc2l0eTEyMDAGA1UEAxQpcm9ib3RzQHN1bC1seWJlcnNlcnZpY2VzLWRl
10
+ di5zdGFuZm9yZC5lZHUxMTAvBgkqhkiG9w0BCQEWImRsc3MtZGV2ZWxvcGVyc0Bs
11
+ aXN0cy5zdGFuZm9yZC5lZHUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
12
+ AQC1t+PPhLTDFQBuAf4f1GOj7jHdXMN0tvSHL1OCaibe0d8iKbXCMMIE0z8lbBpZ
13
+ 1pA+8terIvxoTlly92EEvGkywZb+DIxnjyG0b9ftDJ64pARJMcnvwJMW/w3WdHCd
14
+ 5uJ5HVM8ZCbEItUfskFukS6tfNBpG8ri6cIQ2ulJzOWYxPV5R2eRneM6vtFD0xtu
15
+ RJb/uMwiOwB79qk4QazbEQtkeZsrvomDFkIuHO/nf9wmgYG99H7q1kXplIrzDDX+
16
+ fvD+JHvuMr5YXfmBQ9wmaZf6YIL7CXj79HUF4uG/a0SjrLZyLh262zWJQFVpjSW8
17
+ Brl/fAyjeZvWJMyCDXRqsedjAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAG0jIfTj
18
+ 1FJsxTzcD938vtKuNo5XEIX8phqW1MA2eJ5Ojgu1hpW5Jf7fmUHKVnamm7eya5QR
19
+ 356KCJzZzwdCS4xVFq/l43gCA2j8TYrwO6/0EfM/5psUZS3ecwahzcJXfHPHvd9u
20
+ qaXRqbjJYi+Ls70uStTC/JBIIu48atDF0DeXJ21hAbstZ1OKKNzAcYgZk14GKxCi
21
+ ArgAzdg8UDtC4KsdqgxP6vF8Vc/gcHSu9AkVHgPVXbITjV0/kaKNgFi0bVqP7bJD
22
+ hrUFYrS+S+hflQJCmVrDwW0JU2HnJ3EJOFX5F4FYHL4vt6ZjVsMzucraMqiLyUaO
23
+ s6DVaWO8WMlphmFUfb3ChQjrKxFZZ6vKJPD/ExnQHa0kWwOELyMJuXw2PLk7k+qD
24
+ rmjX+K3Ed+JiJuiDG5k8f1BDZE24lvxDwye5fQyDWPfib1yTClYYy4PRh4AI688f
25
+ qgMyv51Qx82o0IJ1On1rNg5/iB7OEVcYSol3U5xiY9gRUd3vq637agZzMuRQnKXs
26
+ Uj0+Vl4OrZ54F8MVsUKfi7Je1oVUEhuHqFt/tSOGlHg1XyR/ExwulCNBKIVdhhrF
27
+ rxZCYrGDSUCF6tteJXpOBTtFT9b7hbMmBohKyS4XjfPSPRh9QHx7wepqSp3aHpmR
28
+ 4gY8Go40mS83xHCKBooqsy2/Z9vQlSb9Cr8u
29
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpQIBAAKCAQEAtbfjz4S0wxUAbgH+H9Rjo+4x3VzDdLb0hy9Tgmom3tHfIim1
3
+ wjDCBNM/JWwaWdaQPvLXqyL8aE5ZcvdhBLxpMsGW/gyMZ48htG/X7QyeuKQESTHJ
4
+ 78CTFv8N1nRwnebieR1TPGQmxCLVH7JBbpEurXzQaRvK4unCENrpSczlmMT1eUdn
5
+ kZ3jOr7RQ9MbbkSW/7jMIjsAe/apOEGs2xELZHmbK76JgxZCLhzv53/cJoGBvfR+
6
+ 6tZF6ZSK8ww1/n7w/iR77jK+WF35gUPcJmmX+mCC+wl4+/R1BeLhv2tEo6y2ci4d
7
+ uts1iUBVaY0lvAa5f3wMo3mb1iTMgg10arHnYwIDAQABAoIBAQCmlDzsZZ2C24S6
8
+ U29OZFc21kq1vqyaGIEOT48BFSguyDsAyTWKH0IsRC41suRxCGTQn7KeegLh5zjO
9
+ UAGK4uCYm6g7mOs4n5fpHUHWVuRFJG2dX1vbQTBVO1fHCJSX2ygumHhN+w0ibT/r
10
+ v2+F2ObuOGWghM62tkylQNfsRD0QjalE8ST2xp9p4xwPrAwEuURlA04qnLYNi4+6
11
+ qexDtrLG8E6JV/dd3dY95WjKPscadR1fAKm9sebD0XO31Lu6BGCvpmBU0OmYVfrY
12
+ BN/ofhEmJh+Xgwfxx6PicRDvu9bPnffqbGhDO4ckGDlqXp1fDBgf1I7CclXdrVMH
13
+ Qsxunh5pAoGBAN7929V1aw0S7Rqvuf4N+o1XwBExa2DL7EYI1Oea/nuBMPqvfeNh
14
+ SrbM0gYejEzLmeRUUKRhMMoAgXQnxcg3Kz/5pUXT3b4YtzeskX8nkJ6/2gEU3M7E
15
+ lJj7c5wW1otqMH19+iDNR4N8vjPh98kDJW1HZUHSAcdyE+dZiFP2ofMfAoGBANCe
16
+ AJgA9EkdwZsom+I7Ty9LSrTWx6cKmNEbLVn1iSlyJx1kHoWyTMtuZszCWBjiXx70
17
+ 84WpX2B4MuJBq6sSoEiUahNsphks82glOd6i+eoE/I+NtZehOFnkAMyGux+FbMyG
18
+ q/9ZlQgsbWpFHxS59vX/kvlNun2RpJkaF6QPBuc9AoGBAIGdscCb5cPNsoCGkGf6
19
+ HB84WG4l+bJkFkyHKaoOT8neSGgOxe/7R4CGAbaI3yhsWGF+GPnTfJaOQLERxUch
20
+ ukQPil/STNwIZcc4ycHNb6S3A7MJO2f8oBtkXcjnBYI4EUOAjHmwmNb3FV/3Ax6W
21
+ c5TXoSXnOh2CU8twIWwcufolAoGATqnFf4uckZVu05rUbNIAYcz6NoZmck5EoVSm
22
+ HS3Asqggp6yA9djtrCfNC5icr4VsaLfku5nKJQ4t4bLxkGhNmBCejwSA/S09+x9O
23
+ Wu0JX3zR3y+IMczQ+tRGmNiU5qXhCJ4fbQHSeGqIN3Io7h/RR6E/QlJU59RrRG/a
24
+ SjqAV+ECgYEA2mA5VFK3jECnLde+biEaXidIOuBMcqaP0VG6sBwz2wTGSTBE1WkG
25
+ 6prCD0McWVAgDTm3MMKxeuMaoW5eEi83+G+CywLaTBpc8Hz7qgRhBpKhRirCfHMW
26
+ EfQV5k32vEGoSI+eG8zcGb9mwDeb/EWXAMGXrx2YuYFu7txtwC2mZXc=
27
+ -----END RSA PRIVATE KEY-----
@@ -16,6 +16,8 @@
16
16
  :metadata:
17
17
  :catalog:
18
18
  :url:
19
+ :user:
20
+ :pass:
19
21
  :sdr:
20
22
  :local_workspace_root: /dor/workspace
21
23
  :local_export_home: /dor/export
@@ -0,0 +1,80 @@
1
+ cert_dir = File.join(File.dirname(__FILE__), "..", "certs")
2
+
3
+ Dor::Config.configure do
4
+ fedora do
5
+ url 'https://sul-dor-dev.stanford.edu/fedora'
6
+ end
7
+
8
+ ssl do
9
+ cert_file File.join(cert_dir,"robots-dor-dev.crt")
10
+ key_file File.join(cert_dir,"robots-dor-dev.key")
11
+ key_pass ''
12
+ end
13
+
14
+ suri do
15
+ mint_ids true
16
+ id_namespace 'druid'
17
+ url 'https://lyberservices-dev.stanford.edu'
18
+ user 'labware'
19
+ pass 'lyberteam'
20
+ end
21
+
22
+ metadata do
23
+ exist.url 'http://viewer:l3l%40nd@lyberapps-dev.stanford.edu/exist/rest/'
24
+ catalog.url 'http://lyberservices-prod.stanford.edu/catalog/mods'
25
+ end
26
+
27
+ stacks do
28
+ document_cache_host 'purl-dev.stanford.edu'
29
+ local_stacks_root '/stacks'
30
+ local_document_cache_root '/purl/document_cache'
31
+ local_workspace_root '/dor/workspace'
32
+ end
33
+
34
+ solrizer.url 'http://sul-solr.stanford.edu/solr/argo_test'
35
+ workflow.url 'https://lyberservices-dev.stanford.edu/workflow/'
36
+ dor_services.url 'https://dorAdmin:dorAdmin@sul-lyberservices-dev.stanford.edu/dor'
37
+
38
+ cleanup do
39
+ local_workspace_root '/dor/workspace'
40
+ local_export_home '/dor/export'
41
+ end
42
+
43
+ sdr do
44
+ url 'https://sdrAdmin:sdrAdmin@sdr-services-test.stanford.edu/sdr/'
45
+ local_workspace_root '/dor/workspace'
46
+ local_export_home '/dor/export'
47
+ datastreams do
48
+ administrativeMetadata 'optional'
49
+ contentMetadata 'optional'
50
+ descMetadata 'required'
51
+ defaultObjectRights 'optional'
52
+ events 'optional'
53
+ embargoMetadata 'optional'
54
+ identityMetadata 'required'
55
+ provenanceMetadata 'required'
56
+ relationshipMetadata 'required'
57
+ rightsMetadata 'optional'
58
+ roleMetadata 'optional'
59
+ sourceMetadata 'optional'
60
+ technicalMetadata 'optional'
61
+ versionMetadata 'required'
62
+ workflows 'optional'
63
+ end
64
+ end
65
+
66
+ accessioning_robot_sleep_time 30
67
+
68
+ end
69
+
70
+
71
+ #WORKFLOW_URI = 'http://lyberservices-test.stanford.edu/workflow'
72
+
73
+ # Constants for Dor::WorkflowService
74
+ #module Dor
75
+ # CREATE_WORKFLOW = DOR_CREATE_WORKFLOW = true
76
+ # WF_URI = 'http://lyberservices-test.stanford.edu/workflow'
77
+ #end
78
+
79
+ # External application locations
80
+ JHOVE_HOME = File.join(ENV['HOME'], 'jhoveToolkit')
@@ -82,75 +82,84 @@ module Dor
82
82
  require 'druid-tools'
83
83
 
84
84
  # datastreams
85
- autoload :AdministrativeMetadataDS, 'dor/datastreams/administrative_metadata_ds'
86
- autoload :ContentMetadataDS, 'dor/datastreams/content_metadata_ds'
87
- autoload :DescMetadataDS, 'dor/datastreams/desc_metadata_ds'
88
- autoload :EmbargoMetadataDS, 'dor/datastreams/embargo_metadata_ds'
89
- autoload :EventsDS, 'dor/datastreams/events_ds'
90
- autoload :GeoMetadataDS, 'dor/datastreams/geo_metadata_ds'
91
- autoload :IdentityMetadataDS, 'dor/datastreams/identity_metadata_ds'
92
- autoload :RightsMetadataDS, 'dor/datastreams/rights_metadata_ds'
93
- autoload :RoleMetadataDS, 'dor/datastreams/role_metadata_ds'
94
- autoload :WorkflowDefinitionDs, 'dor/datastreams/workflow_definition_ds'
95
- autoload :WorkflowDs, 'dor/datastreams/workflow_ds'
96
- autoload :VersionMetadataDS, 'dor/datastreams/version_metadata_ds'
97
- autoload :DefaultObjectRightsDS, 'dor/datastreams/default_object_rights_ds'
98
- autoload :SimpleDublinCoreDs, 'dor/datastreams/simple_dublin_core_ds'
85
+ autoload_under 'datastreams' do
86
+ autoload :AdministrativeMetadataDS
87
+ autoload :ContentMetadataDS
88
+ autoload :DescMetadataDS
89
+ autoload :EmbargoMetadataDS
90
+ autoload :EventsDS
91
+ autoload :GeoMetadataDS
92
+ autoload :IdentityMetadataDS
93
+ autoload :RightsMetadataDS
94
+ autoload :RoleMetadataDS
95
+ autoload :WorkflowDefinitionDs
96
+ autoload :WorkflowDs
97
+ autoload :VersionMetadataDS
98
+ autoload :DefaultObjectRightsDS
99
+ autoload :SimpleDublinCoreDs
100
+ end
99
101
 
100
102
  # DOR Concerns
101
- autoload :Identifiable, 'dor/models/concerns/identifiable'
102
- autoload :Itemizable, 'dor/models/concerns/itemizable'
103
- autoload :Processable, 'dor/models/concerns/processable'
104
- autoload :Governable, 'dor/models/concerns/governable'
105
- autoload :Describable, 'dor/models/concerns/describable'
106
- autoload :Publishable, 'dor/models/concerns/publishable'
107
- autoload :Shelvable, 'dor/models/concerns/shelvable'
108
- autoload :Embargoable, 'dor/models/concerns/embargoable'
109
- autoload :Preservable, 'dor/models/concerns/preservable'
110
- autoload :Assembleable, 'dor/models/concerns/assembleable'
111
- autoload :Eventable, 'dor/models/concerns/eventable'
112
- autoload :Versionable, 'dor/models/concerns/versionable'
113
- autoload :Contentable, 'dor/models/concerns/contentable'
114
- autoload :Editable, 'dor/models/concerns/editable'
115
- autoload :Discoverable, 'dor/models/concerns/discoverable'
116
- autoload :Geoable, 'dor/models/concerns/geoable'
117
- autoload :Releaseable, 'dor/models/concerns/releaseable'
118
- autoload :Rightsable, 'dor/models/concerns/rightsable'
103
+ autoload_under 'models/concerns' do
104
+ autoload :Identifiable
105
+ autoload :Itemizable
106
+ autoload :Processable
107
+ autoload :Governable
108
+ autoload :Describable
109
+ autoload :Publishable
110
+ autoload :Shelvable
111
+ autoload :Embargoable
112
+ autoload :Preservable
113
+ autoload :Assembleable
114
+ autoload :Eventable
115
+ autoload :Versionable
116
+ autoload :Contentable
117
+ autoload :Editable
118
+ autoload :Discoverable
119
+ autoload :Geoable
120
+ autoload :Releaseable
121
+ autoload :Rightsable
122
+ end
119
123
 
120
124
  eager_autoload do
121
125
  # ActiveFedora Classes
122
- autoload :Abstract, 'dor/models/abstract'
123
- autoload :Agreement, 'dor/models/agreement'
124
- autoload :Item, 'dor/models/item'
125
- autoload :Set, 'dor/models/set'
126
- autoload :Collection, 'dor/models/collection'
127
- autoload :AdminPolicyObject, 'dor/models/admin_policy_object'
128
- autoload :WorkflowObject, 'dor/models/workflow_object'
126
+ autoload_under 'models' do
127
+ autoload :Abstract
128
+ autoload :Agreement
129
+ autoload :Item
130
+ autoload :Set
131
+ autoload :Collection
132
+ autoload :AdminPolicyObject
133
+ autoload :WorkflowObject
134
+ end
129
135
  end
130
136
 
131
137
  # Services
132
- autoload :SearchService, 'dor/services/search_service'
133
- autoload :IndexingService, 'dor/services/indexing_service'
134
- autoload :MetadataService, 'dor/services/metadata_service'
135
- autoload :RegistrationService, 'dor/services/registration_service'
136
- autoload :SuriService, 'dor/services/suri_service'
137
- autoload :WorkflowService, 'dor/services/workflow_service'
138
- autoload :DigitalStacksService, 'dor/services/digital_stacks_service'
139
- autoload :SdrIngestService, 'dor/services/sdr_ingest_service'
140
- autoload :CleanupService, 'dor/services/cleanup_service'
141
- autoload :ProvenanceMetadataService, 'dor/services/provenance_metadata_service'
142
- autoload :TechnicalMetadataService, 'dor/services/technical_metadata_service'
143
- autoload :MergeService, 'dor/services/merge_service'
144
- autoload :ResetWorkspaceService, 'dor/services/reset_workspace_service'
145
- autoload :CleanupResetService, 'dor/services/cleanup_reset_service'
146
- autoload :PublicDescMetadataService, 'dor/services/public_desc_metadata_service'
147
- autoload :PublicXmlService, 'dor/services/public_xml_service'
138
+ autoload_under 'services' do
139
+ autoload :SearchService
140
+ autoload :IndexingService
141
+ autoload :MetadataService
142
+ autoload :RegistrationService
143
+ autoload :SuriService
144
+ autoload :WorkflowService
145
+ autoload :DigitalStacksService
146
+ autoload :SdrIngestService
147
+ autoload :CleanupService
148
+ autoload :ProvenanceMetadataService
149
+ autoload :TechnicalMetadataService
150
+ autoload :MergeService
151
+ autoload :ResetWorkspaceService
152
+ autoload :CleanupResetService
153
+ autoload :PublicDescMetadataService
154
+ autoload :PublicXmlService
155
+ end
148
156
 
149
157
  # Workflow Classes
150
158
  module Workflow
151
- autoload :Graph, 'dor/workflow/graph'
152
- autoload :Process, 'dor/workflow/process'
153
- autoload :Document, 'dor/workflow/document'
159
+ extend ActiveSupport::Autoload
160
+ autoload :Graph
161
+ autoload :Process
162
+ autoload :Document
154
163
  end
155
164
 
156
165
  eager_load!
@@ -93,6 +93,7 @@ module Dor
93
93
  def mods_title
94
94
  descMetadata.term_values(:title_info, :main_title).first
95
95
  end
96
+
96
97
  def mods_title=(val)
97
98
  descMetadata.update_values({[:title_info, :main_title] => val})
98
99
  end
@@ -102,6 +103,7 @@ module Dor
102
103
  def default_collections
103
104
  administrativeMetadata.term_values(:registration, :default_collection)
104
105
  end
106
+
105
107
  # Add a collection to the listing of collections for items governed by this apo.
106
108
  # @param val [String] pid of the collection, ex. druid:ab123cd4567
107
109
  def add_default_collection(val)
@@ -116,6 +118,7 @@ module Dor
116
118
  node['id'] = val
117
119
  reg.add_child(node)
118
120
  end
121
+
119
122
  def remove_default_collection(val)
120
123
  xml = administrativeMetadata.ng_xml
121
124
  administrativeMetadata.ng_xml_will_change!
@@ -138,6 +141,7 @@ module Dor
138
141
  def metadata_source
139
142
  administrativeMetadata.metadata_source.first
140
143
  end
144
+
141
145
  def metadata_source=(val)
142
146
  if administrativeMetadata.descMetadata.nil?
143
147
  administrativeMetadata.ng_xml_will_change!
@@ -149,6 +153,7 @@ module Dor
149
153
  def use_statement
150
154
  defaultObjectRights.use_statement.first
151
155
  end
156
+
152
157
  def use_statement=(val)
153
158
  defaultObjectRights.update_term!(:use_statement, val.nil? ? '' : val)
154
159
  end
@@ -156,6 +161,7 @@ module Dor
156
161
  def copyright_statement
157
162
  defaultObjectRights.copyright.first
158
163
  end
164
+
159
165
  def copyright_statement=(val)
160
166
  defaultObjectRights.update_term!(:copyright, val.nil? ? '' : val)
161
167
  end
@@ -163,6 +169,7 @@ module Dor
163
169
  def creative_commons_license
164
170
  defaultObjectRights.creative_commons.first
165
171
  end
172
+
166
173
  def creative_commons_license_human
167
174
  defaultObjectRights.creative_commons_human.first
168
175
  end
@@ -170,6 +177,7 @@ module Dor
170
177
  def open_data_commons_license
171
178
  defaultObjectRights.open_data_commons.first
172
179
  end
180
+
173
181
  def open_data_commons_license_human
174
182
  defaultObjectRights.open_data_commons_human.first
175
183
  end
@@ -179,11 +187,13 @@ module Dor
179
187
  return open_data_commons_license unless open_data_commons_license.blank?
180
188
  nil
181
189
  end
190
+
182
191
  def use_license_uri
183
192
  return defaultObjectRights.creative_commons.uri.first unless defaultObjectRights.creative_commons.uri.blank?
184
193
  return defaultObjectRights.open_data_commons.uri.first unless defaultObjectRights.open_data_commons.uri.blank?
185
194
  nil
186
195
  end
196
+
187
197
  def use_license_human
188
198
  return creative_commons_license_human unless creative_commons_license_human.blank?
189
199
  return open_data_commons_license_human unless open_data_commons_license_human.blank?
@@ -195,6 +205,7 @@ module Dor
195
205
  defaultObjectRights.creative_commons = use_license_machine
196
206
  defaultObjectRights.creative_commons.uri = CREATIVE_COMMONS_USE_LICENSES[use_license_machine][:uri]
197
207
  end
208
+
198
209
  def creative_commons_license_human=(use_license_human)
199
210
  defaultObjectRights.initialize_term!(:creative_commons_human)
200
211
  defaultObjectRights.creative_commons_human = use_license_human
@@ -205,6 +216,7 @@ module Dor
205
216
  defaultObjectRights.open_data_commons = use_license_machine
206
217
  defaultObjectRights.open_data_commons.uri = OPEN_DATA_COMMONS_USE_LICENSES[use_license_machine][:uri]
207
218
  end
219
+
208
220
  def open_data_commons_license_human=(use_license_human)
209
221
  defaultObjectRights.initialize_term!(:open_data_commons_human)
210
222
  defaultObjectRights.open_data_commons_human = use_license_human
@@ -287,6 +299,7 @@ module Dor
287
299
  def desc_metadata_format
288
300
  administrativeMetadata.metadata_format.first
289
301
  end
302
+
290
303
  def desc_metadata_format=(format)
291
304
  # create the node if it isnt there already
292
305
  unless administrativeMetadata.metadata_format.first
@@ -299,6 +312,7 @@ module Dor
299
312
  def desc_metadata_source
300
313
  administrativeMetadata.metadata_source.first
301
314
  end
315
+
302
316
  def desc_metadata_source=(source)
303
317
  # create the node if it isnt there already
304
318
  unless administrativeMetadata.metadata_source.first
@@ -313,6 +327,7 @@ module Dor
313
327
  def default_workflows
314
328
  administrativeMetadata.term_values(:registration, :workflow_id)
315
329
  end
330
+
316
331
  # set a single default workflow
317
332
  # @param wf [String] the name of the workflow, ex. 'digitizationWF'
318
333
  def default_workflow=(wf)
@@ -338,6 +353,7 @@ module Dor
338
353
  def agreement
339
354
  agreement_object ? agreement_object.pid : ''
340
355
  end
356
+
341
357
  def agreement=(val)
342
358
  fail ArgumentError, 'agreement must have a valid druid' if val.blank?
343
359
  self.agreement_object = Dor.find val.to_s, :cast => true
@@ -72,10 +72,12 @@ module Dor
72
72
  collections.delete(collection)
73
73
  sets.delete(collection)
74
74
  end
75
+
75
76
  # set the rights metadata datastream to the content of the APO's default object rights
76
77
  def reapplyAdminPolicyObjectDefaults
77
78
  rightsMetadata.content = admin_policy_object.datastreams['defaultObjectRights'].content
78
79
  end
80
+
79
81
  def rights
80
82
  return nil unless self.respond_to? :rightsMetadata
81
83
  return nil if rightsMetadata.nil?
@@ -91,54 +93,71 @@ module Dor
91
93
  'None'
92
94
  end
93
95
  end
96
+
94
97
  def groups_which_manage_item
95
98
  ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor']
96
99
  end
100
+
97
101
  def groups_which_manage_desc_metadata
98
102
  ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor', 'dor-apo-metadata']
99
103
  end
104
+
100
105
  def groups_which_manage_system_metadata
101
106
  ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor']
102
107
  end
108
+
103
109
  def groups_which_manage_content
104
110
  ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor']
105
111
  end
112
+
106
113
  def groups_which_manage_rights
107
114
  ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor']
108
115
  end
116
+
109
117
  def groups_which_manage_embargo
110
118
  ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor']
111
119
  end
120
+
112
121
  def groups_which_view_content
113
122
  ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor', 'dor-viewer', 'sdr-viewer']
114
123
  end
124
+
115
125
  def groups_which_view_metadata
116
126
  ['dor-administrator', 'sdr-administrator', 'dor-apo-manager', 'dor-apo-depositor', 'dor-viewer', 'sdr-viewer']
117
127
  end
128
+
118
129
  def intersect(arr1, arr2)
119
130
  (arr1 & arr2).length > 0
120
131
  end
132
+
121
133
  def can_manage_item?(roles)
122
134
  intersect roles, groups_which_manage_item
123
135
  end
136
+
124
137
  def can_manage_desc_metadata?(roles)
125
138
  intersect roles, groups_which_manage_desc_metadata
126
139
  end
140
+
127
141
  def can_manage_system_metadata?(roles)
128
142
  intersect roles, groups_which_manage_system_metadata
129
143
  end
144
+
130
145
  def can_manage_content?(roles)
131
146
  intersect roles, groups_which_manage_content
132
147
  end
148
+
133
149
  def can_manage_rights?(roles)
134
150
  intersect roles, groups_which_manage_rights
135
151
  end
152
+
136
153
  def can_manage_embargo?(roles)
137
154
  intersect roles, groups_which_manage_embargo
138
155
  end
156
+
139
157
  def can_view_content?(roles)
140
158
  intersect roles, groups_which_view_content
141
159
  end
160
+
142
161
  def can_view_metadata?(roles)
143
162
  intersect roles, groups_which_view_metadata
144
163
  end
@@ -15,18 +15,26 @@ module Dor
15
15
 
16
16
  # these are the finders we will use to search for a thumb resource in contentMetadata, they will be searched in the order provided, stopping when one is reached
17
17
  thumb_xpath_finders = [
18
- {image_type: 'local', finder: "/contentMetadata/resource[@type='thumb' and @thumb='yes']/file[#{mime_type_finder}]"}, # first find a file of mimetype jp2 explicitly marked as a thumb in the resource type and with a thumb=yes attribute
19
- {image_type: 'external', finder: "/contentMetadata/resource[@type='thumb' and @thumb='yes']/externalFile[#{mime_type_finder}]"}, # same thing for external files
20
- {image_type: 'local', finder: "/contentMetadata/resource[(@type='page' or @type='image') and @thumb='yes']/file[#{mime_type_finder}]"},# next find any image or page resource types with the thumb=yes attribute of mimetype jp2
21
- {image_type: 'external', finder: "/contentMetadata/resource[(@type='page' or @type='image') and @thumb='yes']/externalFile[#{mime_type_finder}]"},# same thing for external file
22
- {image_type: 'local', finder: "/contentMetadata/resource[@type='thumb']/file[#{mime_type_finder}]"}, # next find a file of mimetype jp2 and resource type=thumb but not marked with the thumb directive
23
- {image_type: 'external', finder: "/contentMetadata/resource[@type='thumb']/externalFile[#{mime_type_finder}]"}, # same thing for external file
24
- {image_type: 'local', finder: "/contentMetadata/resource[@type='page' or @type='image']/file[#{mime_type_finder}]"}, # finally find the first page or image resource of mimetype jp2
25
- {image_type: 'external', finder: "/contentMetadata/resource[@type='page' or @type='image']/externalFile[#{mime_type_finder}]"} # same thing for external file
18
+ # first find a file of mimetype jp2 explicitly marked as a thumb in the resource type and with a thumb=yes attribute
19
+ {image_type: 'local', finder: "/contentMetadata/resource[@type='thumb' and @thumb='yes']/file[#{mime_type_finder}]"},
20
+ # same thing for external files
21
+ {image_type: 'external', finder: "/contentMetadata/resource[@type='thumb' and @thumb='yes']/externalFile[#{mime_type_finder}]"},
22
+ # next find any image or page resource types with the thumb=yes attribute of mimetype jp2
23
+ {image_type: 'local', finder: "/contentMetadata/resource[(@type='page' or @type='image') and @thumb='yes']/file[#{mime_type_finder}]"},
24
+ # same thing for external file
25
+ {image_type: 'external', finder: "/contentMetadata/resource[(@type='page' or @type='image') and @thumb='yes']/externalFile[#{mime_type_finder}]"},
26
+ # next find a file of mimetype jp2 and resource type=thumb but not marked with the thumb directive
27
+ {image_type: 'local', finder: "/contentMetadata/resource[@type='thumb']/file[#{mime_type_finder}]"},
28
+ # same thing for external file
29
+ {image_type: 'external', finder: "/contentMetadata/resource[@type='thumb']/externalFile[#{mime_type_finder}]"},
30
+ # finally find the first page or image resource of mimetype jp2
31
+ {image_type: 'local', finder: "/contentMetadata/resource[@type='page' or @type='image']/file[#{mime_type_finder}]"},
32
+ # same thing for external file
33
+ {image_type: 'external', finder: "/contentMetadata/resource[@type='page' or @type='image']/externalFile[#{mime_type_finder}]"}
26
34
  ]
27
-
35
+
28
36
  thumb_xpath_finders.each do |search_path|
29
- thumb_files = cm.xpath(search_path[:finder]) # look for a thumb
37
+ thumb_files = cm.xpath(search_path[:finder]) # look for a thumb
30
38
  if thumb_files.size > 0 # if we find one, return the filename based on whether it is a local file or external file
31
39
  if search_path[:image_type] == 'local'
32
40
  thumb_image="#{remove_druid_prefix}/#{thumb_files[0]['id']}"
@@ -35,8 +43,8 @@ module Dor
35
43
  end
36
44
  break # break out of the loop so we stop searching
37
45
  end
38
- end
39
-
46
+ end
47
+
40
48
  thumb_image
41
49
  end
42
50
 
@@ -49,7 +57,7 @@ module Dor
49
57
  thumb_filename=thumb_image.split(/#{pid_regex}[\/]/).last # everything after the druid
50
58
  "#{thumb_druid}%2F#{ERB::Util.url_encode(thumb_filename)}"
51
59
  end
52
-
60
+
53
61
  # Return a full qualified thumbnail image URL if the thumb is computable
54
62
  # @return [String] fully qualified image URL for the computed thumbnail, e.g. https://stacks.stanford.edu/image/iiif/oo000oo0001%2Ffilenamewith%20space/full
55
63
  def thumb_url
@@ -57,7 +65,9 @@ module Dor
57
65
  thumb_basename=File.basename(encoded_thumb, File.extname(encoded_thumb)) # strip the extension for URL generation
58
66
  "https://#{Dor::Config.stacks.host}/image/iiif/#{thumb_basename}/full/!400,400/0/default.jpg"
59
67
  end
60
-
68
+
69
+ # strips away the relationships that should not be shown in public desc metadata
70
+ # @return [Nokogiri::XML]
61
71
  def public_relationships
62
72
  include_elements = ['fedora:isMemberOf', 'fedora:isMemberOfCollection', 'fedora:isConstituentOf']
63
73
  rels_doc = Nokogiri::XML(datastreams['RELS-EXT'].content)
@@ -2,7 +2,9 @@ require 'rest-client'
2
2
 
3
3
  handler = Class.new do
4
4
  def fetch(prefix, identifier)
5
- client = RestClient::Resource.new(Dor::Config.metadata.catalog.url)
5
+ client = RestClient::Resource.new(Dor::Config.metadata.catalog.url,
6
+ Dor::Config.metadata.catalog.user,
7
+ Dor::Config.metadata.catalog.pass)
6
8
  client["?#{prefix.chomp}=#{identifier.chomp}"].get
7
9
  end
8
10
 
@@ -1,3 +1,3 @@
1
1
  module Dor
2
- VERSION = '5.29.0'.freeze
2
+ VERSION = '5.30.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor-services
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.29.0
4
+ version: 5.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Klein
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2018-04-18 00:00:00.000000000 Z
17
+ date: 2018-05-31 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: active-fedora
@@ -22,7 +22,7 @@ dependencies:
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '6.0'
25
+ version: '7.0'
26
26
  - - "<"
27
27
  - !ruby/object:Gem::Version
28
28
  version: 9.a
@@ -32,7 +32,7 @@ dependencies:
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '6.0'
35
+ version: '7.0'
36
36
  - - "<"
37
37
  - !ruby/object:Gem::Version
38
38
  version: 9.a
@@ -42,14 +42,20 @@ dependencies:
42
42
  requirements:
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
- version: 3.2.18
45
+ version: 4.2.10
46
+ - - "<"
47
+ - !ruby/object:Gem::Version
48
+ version: 5.2.0
46
49
  type: :runtime
47
50
  prerelease: false
48
51
  version_requirements: !ruby/object:Gem::Requirement
49
52
  requirements:
50
53
  - - ">="
51
54
  - !ruby/object:Gem::Version
52
- version: 3.2.18
55
+ version: 4.2.10
56
+ - - "<"
57
+ - !ruby/object:Gem::Version
58
+ version: 5.2.0
53
59
  - !ruby/object:Gem::Dependency
54
60
  name: confstruct
55
61
  requirement: !ruby/object:Gem::Requirement
@@ -234,20 +240,14 @@ dependencies:
234
240
  requirements:
235
241
  - - "~>"
236
242
  - !ruby/object:Gem::Version
237
- version: '1.6'
238
- - - ">="
239
- - !ruby/object:Gem::Version
240
- version: 1.6.5
243
+ version: '2.1'
241
244
  type: :runtime
242
245
  prerelease: false
243
246
  version_requirements: !ruby/object:Gem::Requirement
244
247
  requirements:
245
248
  - - "~>"
246
249
  - !ruby/object:Gem::Version
247
- version: '1.6'
248
- - - ">="
249
- - !ruby/object:Gem::Version
250
- version: 1.6.5
250
+ version: '2.1'
251
251
  - !ruby/object:Gem::Dependency
252
252
  name: solrizer
253
253
  requirement: !ruby/object:Gem::Requirement
@@ -530,16 +530,16 @@ dependencies:
530
530
  name: rubocop
531
531
  requirement: !ruby/object:Gem::Requirement
532
532
  requirements:
533
- - - ">="
533
+ - - "~>"
534
534
  - !ruby/object:Gem::Version
535
- version: '0'
535
+ version: 0.56.0
536
536
  type: :development
537
537
  prerelease: false
538
538
  version_requirements: !ruby/object:Gem::Requirement
539
539
  requirements:
540
- - - ">="
540
+ - - "~>"
541
541
  - !ruby/object:Gem::Version
542
- version: '0'
542
+ version: 0.56.0
543
543
  - !ruby/object:Gem::Dependency
544
544
  name: yard
545
545
  requirement: !ruby/object:Gem::Requirement
@@ -562,7 +562,10 @@ extensions: []
562
562
  extra_rdoc_files: []
563
563
  files:
564
564
  - config/certs/README
565
+ - config/certs/robots-dor-dev.crt
566
+ - config/certs/robots-dor-dev.key
565
567
  - config/config_defaults.yml
568
+ - config/dev_console_env.rb
566
569
  - config/dev_console_env.rb.example
567
570
  - config/predicate_mappings.yml
568
571
  - lib/dor-services.rb
@@ -658,7 +661,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
658
661
  version: 1.3.6
659
662
  requirements: []
660
663
  rubyforge_project:
661
- rubygems_version: 2.6.11
664
+ rubygems_version: 2.6.13
662
665
  signing_key:
663
666
  specification_version: 4
664
667
  summary: Ruby implmentation of DOR services used by the SULAIR Digital Library