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 +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
|