dor-services 5.29.0 → 5.30.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/certs/robots-dor-dev.crt +29 -0
- data/config/certs/robots-dor-dev.key +27 -0
- data/config/config_defaults.yml +2 -0
- data/config/dev_console_env.rb +80 -0
- data/lib/dor-services.rb +67 -58
- data/lib/dor/models/concerns/editable.rb +16 -0
- data/lib/dor/models/concerns/governable.rb +19 -0
- data/lib/dor/models/concerns/publishable.rb +24 -14
- data/lib/dor/services/metadata_handlers/catalog_handler.rb +3 -1
- data/lib/dor/version.rb +1 -1
- metadata +22 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89a45fc0d4d2b861d2a63f35501cab481ac19886
|
4
|
+
data.tar.gz: 4a2814c6b8dbabb5b8d9e08ff99f3a7e13ae2498
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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-----
|
data/config/config_defaults.yml
CHANGED
@@ -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')
|
data/lib/dor-services.rb
CHANGED
@@ -82,75 +82,84 @@ module Dor
|
|
82
82
|
require 'druid-tools'
|
83
83
|
|
84
84
|
# datastreams
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
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
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
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
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
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
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
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
|
-
|
152
|
-
autoload :
|
153
|
-
autoload :
|
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
|
-
|
19
|
-
{image_type: '
|
20
|
-
|
21
|
-
{image_type: 'external', finder: "/contentMetadata/resource[
|
22
|
-
|
23
|
-
{image_type: '
|
24
|
-
|
25
|
-
{image_type: 'external', finder: "/contentMetadata/resource[@type='page' or @type='image']/externalFile[#{mime_type_finder}]"}
|
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
|
|
data/lib/dor/version.rb
CHANGED
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.
|
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-
|
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: '
|
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: '
|
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:
|
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:
|
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
|
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
|
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:
|
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:
|
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.
|
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
|