ddr-core 0.2.2 → 0.3.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/README.md +11 -9
- data/app/models/concerns/ddr/has_admin_metadata.rb +1 -0
- data/app/models/concerns/ddr/has_parent.rb +1 -0
- data/app/models/concerns/ddr/solr_document_behavior.rb +1 -1
- data/app/models/ddr/component.rb +2 -0
- data/app/models/ddr/file.rb +20 -0
- data/app/models/ddr/item.rb +2 -0
- data/app/models/ddr/resource.rb +7 -1
- data/config/initializers/devise.rb +5 -1
- data/config/locales/ddr-core.en.yml +8 -0
- data/lib/ddr/auth/web_auth_context.rb +3 -2
- data/lib/ddr/core/version.rb +1 -1
- data/lib/ddr/error.rb +3 -3
- data/lib/ddr/index/fields.rb +1 -0
- data/lib/ddr/utils.rb +3 -0
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72f6e405acd06621c1a3f1001264c0d8d8bd5302c3e0f36b7ad5805f990eaa99
|
4
|
+
data.tar.gz: 826a0ae2eda2c5937b4c312e140e55672a4e55af807e2980082e0beae85342d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03b21dcd66f1a220167fc421849d4a1f7996be806c310f92adfad14ee8f7f9cc0ca030f4d718a29be95586eac0b757d5d78e086ac9b5442d7865bab1d326a438
|
7
|
+
data.tar.gz: cf249bc22b8b381f20b3149ba421496098aa4576528460cbde047e7fdded8396ceb66f522428ed11677799c5bbd0ea53676bb199ea80c9b8c3d75d05508e1eab
|
data/README.md
CHANGED
@@ -6,22 +6,24 @@ A port of ddr-models based on Valkyrie.
|
|
6
6
|
|
7
7
|
Install docker (Docker for Mac includes all the required components).
|
8
8
|
|
9
|
-
|
9
|
+
Change to the `.docker` directory.
|
10
10
|
|
11
|
-
|
11
|
+
Start the *development* stack:
|
12
|
+
|
13
|
+
$ ./dev.sh up -d --build
|
12
14
|
|
13
15
|
To run a Bash shell on the app server:
|
14
16
|
|
15
|
-
$
|
17
|
+
$ ./dev.sh run --rm app bash
|
16
18
|
|
17
|
-
To connect to the development database:
|
19
|
+
To connect to the *development* database:
|
18
20
|
|
19
|
-
$
|
21
|
+
$ ./dev.sh run --rm app psql -U postgres -h db -d ddr_core
|
20
22
|
|
21
|
-
To run the test suite
|
23
|
+
To run the *test suite*:
|
22
24
|
|
23
|
-
$
|
25
|
+
$ ./run_test_suite.sh
|
24
26
|
|
25
|
-
Stop the stack:
|
27
|
+
Stop the *development* stack:
|
26
28
|
|
27
|
-
$
|
29
|
+
$ ./dev.sh down
|
@@ -11,6 +11,7 @@ module Ddr
|
|
11
11
|
display_format: Valkyrie::Types::Strict::String.optional,
|
12
12
|
doi: Valkyrie::Types::Strict::String.optional,
|
13
13
|
ead_id: Valkyrie::Types::Strict::String.optional,
|
14
|
+
fcrepo3_pid: Valkyrie::Types::Strict::String.optional,
|
14
15
|
ingested_by: Valkyrie::Types::Strict::String.optional,
|
15
16
|
ingestion_date: Valkyrie::Types::DateTime.optional,
|
16
17
|
is_locked: Valkyrie::Types::Strict::Bool.optional,
|
data/app/models/ddr/component.rb
CHANGED
data/app/models/ddr/file.rb
CHANGED
@@ -20,6 +20,10 @@ module Ddr
|
|
20
20
|
::File::Stat.new(Ddr.storage_adapter.file_path(file_identifier)).ctime
|
21
21
|
end
|
22
22
|
|
23
|
+
def file_path
|
24
|
+
Ddr.storage_adapter.file_path(file_identifier)
|
25
|
+
end
|
26
|
+
|
23
27
|
def file_size
|
24
28
|
file.size
|
25
29
|
end
|
@@ -36,5 +40,21 @@ module Ddr
|
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
43
|
+
def stored_checksums_valid?
|
44
|
+
checksums = digest.each_with_object({}) { |dgst, memo| memo[dgst.type] = dgst.value }
|
45
|
+
file.valid? digests: checksums
|
46
|
+
end
|
47
|
+
|
48
|
+
def validate_checksum!(checksum_value, checksum_type)
|
49
|
+
raise Ddr::Error, I18n.t('ddr.checksum.validation.must_be_stored') unless file_identifier.present?
|
50
|
+
raise Ddr::ChecksumInvalid, I18n.t('ddr.checksum.validation.internal_check_failed') unless stored_checksums_valid?
|
51
|
+
if file.valid? digests: { checksum_type => checksum_value }
|
52
|
+
I18n.t('ddr.checksum.validation.valid', type: checksum_type, value: checksum_value)
|
53
|
+
else
|
54
|
+
raise Ddr::ChecksumInvalid,
|
55
|
+
I18n.t('ddr.checksum.validation.invalid', type: checksum_type, value: checksum_value)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
39
59
|
end
|
40
60
|
end
|
data/app/models/ddr/item.rb
CHANGED
@@ -10,6 +10,8 @@ module Ddr
|
|
10
10
|
|
11
11
|
alias_method :components, :children
|
12
12
|
|
13
|
+
self.parent_class = Ddr::Collection
|
14
|
+
|
13
15
|
### DDRevo #####################
|
14
16
|
# TODO: We may want to revisit this alternate implementation once ddr-core is more fully baked
|
15
17
|
# or it may be fine just as it is
|
data/app/models/ddr/resource.rb
CHANGED
@@ -55,9 +55,15 @@ module Ddr
|
|
55
55
|
fields - FILE_FIELDS - reserved_attributes
|
56
56
|
end
|
57
57
|
|
58
|
-
|
58
|
+
def self.tableized_name
|
59
|
+
name.tableize
|
60
|
+
end
|
61
|
+
|
62
|
+
delegate :attachable_files, :common_model_name, :governable?, :captionable?, :can_be_streamable?,
|
63
|
+
:tableized_name, to: :class
|
59
64
|
|
60
65
|
alias_method :new_record?, :new_record
|
66
|
+
alias_method :resource_model, :internal_resource
|
61
67
|
|
62
68
|
def title_display
|
63
69
|
return title.first if title.present?
|
@@ -3,6 +3,12 @@ en:
|
|
3
3
|
core:
|
4
4
|
errors:
|
5
5
|
incorrect_resource_class: "%{subject} must be a %{resource_class}"
|
6
|
+
checksum:
|
7
|
+
validation:
|
8
|
+
internal_check_failed: The repository internal checksum validation failed.
|
9
|
+
invalid: "The checksum [%{type}]%{value} is not valid."
|
10
|
+
must_be_stored: Checksum cannot be validated on unstored file.
|
11
|
+
valid: "The checksum [%{type}]%{value} is valid."
|
6
12
|
index:
|
7
13
|
fields:
|
8
14
|
aleph_id:
|
@@ -15,6 +21,8 @@ en:
|
|
15
21
|
label: DOI
|
16
22
|
ead_id:
|
17
23
|
label: "EAD ID"
|
24
|
+
fcrepo3_pid:
|
25
|
+
label: "Fedora 3 PID"
|
18
26
|
id:
|
19
27
|
label: ID
|
20
28
|
heading: id
|
@@ -16,13 +16,14 @@ module Ddr::Auth
|
|
16
16
|
|
17
17
|
# @return [Array<String>]
|
18
18
|
def ismemberof
|
19
|
-
split_env("
|
19
|
+
split_env("isMemberOf")
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
23
|
|
24
24
|
def split_env(attr, delim = ";")
|
25
|
-
env
|
25
|
+
val = env[attr] || env["HTTP_#{attr.upcase}"]
|
26
|
+
val ? val.split(delim) : []
|
26
27
|
end
|
27
28
|
|
28
29
|
end
|
data/lib/ddr/core/version.rb
CHANGED
data/lib/ddr/error.rb
CHANGED
@@ -2,9 +2,9 @@ module Ddr
|
|
2
2
|
# Base class for custom exceptions
|
3
3
|
class Error < StandardError; end
|
4
4
|
|
5
|
-
#
|
6
|
-
|
7
|
-
|
5
|
+
# Invalid checksum
|
6
|
+
class ChecksumInvalid < Error; end
|
7
|
+
|
8
8
|
# # Derivative generation failure
|
9
9
|
# class DerivativeGenerationFailure < Error; end
|
10
10
|
#
|
data/lib/ddr/index/fields.rb
CHANGED
@@ -40,6 +40,7 @@ module Ddr::Index
|
|
40
40
|
EAD_ID = Field.new :ead_id, :stored_sortable
|
41
41
|
ENGRAVER_FACET = Field.new :engraver_facet, :facetable
|
42
42
|
EXTRACTED_TEXT = Field.new :extracted_text, solr_name: "extracted_text_tsm"
|
43
|
+
FCREPO3_PID = Field.new :fcrepo3_pid, :stored_sortable
|
43
44
|
FOLDER_FACET = Field.new :folder_facet, :facetable
|
44
45
|
FOR_COLLECTION_ID = Field.new :for_collection_id, :symbol
|
45
46
|
FORMAT_FACET = Field.new :format_facet, :facetable
|
data/lib/ddr/utils.rb
CHANGED
@@ -81,6 +81,9 @@ module Ddr::Utils
|
|
81
81
|
end
|
82
82
|
|
83
83
|
### DDRevo ################################
|
84
|
+
# Now pretty sure this method isn't needed at all. Its use has been eliminated
|
85
|
+
# from Ddr::MetadataFileUpload and the other place it's used -- MetsFile --
|
86
|
+
# is no longer used and won't be ported to DDRevo.
|
84
87
|
# Needs replacements for ActiveFedora::Base.find_each call.
|
85
88
|
### DDRevo ################################
|
86
89
|
# # # Find an object with a given identifier and return its PID.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddr-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Coble
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2019-
|
14
|
+
date: 2019-08-05 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activeresource
|
@@ -89,14 +89,14 @@ dependencies:
|
|
89
89
|
requirements:
|
90
90
|
- - "~>"
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
92
|
+
version: 2.0.0
|
93
93
|
type: :runtime
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
97
|
- - "~>"
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
99
|
+
version: 2.0.0
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: grouper-rest-client
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,14 +131,14 @@ dependencies:
|
|
131
131
|
requirements:
|
132
132
|
- - "~>"
|
133
133
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
134
|
+
version: '1.8'
|
135
135
|
type: :runtime
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
139
|
- - "~>"
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
141
|
+
version: '1.8'
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
143
|
name: devise
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -195,6 +195,20 @@ dependencies:
|
|
195
195
|
- - ">="
|
196
196
|
- !ruby/object:Gem::Version
|
197
197
|
version: '0'
|
198
|
+
- !ruby/object:Gem::Dependency
|
199
|
+
name: solrizer
|
200
|
+
requirement: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - ">="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
type: :runtime
|
206
|
+
prerelease: false
|
207
|
+
version_requirements: !ruby/object:Gem::Requirement
|
208
|
+
requirements:
|
209
|
+
- - ">="
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: '0'
|
198
212
|
- !ruby/object:Gem::Dependency
|
199
213
|
name: factory_bot_rails
|
200
214
|
requirement: !ruby/object:Gem::Requirement
|