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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e6c137f90ad664cc8d8a0842070a881e2a2327b514f1f312c25c441803a8bdd
4
- data.tar.gz: 2ccb2e205769df0f7279eaf1d0d785c6751926d1c662799f1915e1619b679668
3
+ metadata.gz: 72f6e405acd06621c1a3f1001264c0d8d8bd5302c3e0f36b7ad5805f990eaa99
4
+ data.tar.gz: 826a0ae2eda2c5937b4c312e140e55672a4e55af807e2980082e0beae85342d0
5
5
  SHA512:
6
- metadata.gz: 5f27e125f0e21d6585941a612f7efcf6b56aebed98cd4e1747cfcbfe79012a3866b624b72acb158a5dcee225675c88bb1286b82698a5637c5d1d64083e6deb5b
7
- data.tar.gz: b3d1a4b44540f0b3d84c120f28826c2999e2836259fb8974410782c8ca00e084694e8a6fa0f9090b0b2b0ef9f10cf47daae174f05a380f61e708709e417c93cd
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
- Start the stack:
9
+ Change to the `.docker` directory.
10
10
 
11
- $ docker-compose up -d --build
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
- $ docker-compose run --rm app bash
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
- $ docker-compose run --rm app psql -U postgres -h db -d ddr_core_development
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
- $ docker-compose run --rm -e RAILS_ENV=test app bundle exec rake spec
25
+ $ ./run_test_suite.sh
24
26
 
25
- Stop the stack:
27
+ Stop the *development* stack:
26
28
 
27
- $ docker-compose down
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,
@@ -3,6 +3,7 @@ module Ddr
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
+ class_attribute :parent_class
6
7
  attribute :parent_id, Valkyrie::Types::ID.optional
7
8
  end
8
9
 
@@ -188,7 +188,7 @@ module Ddr
188
188
  # get_pid(ActiveFedora::SolrService.solr_name(name, :symbol))
189
189
  # end
190
190
 
191
- def controller_name
191
+ def tableized_name
192
192
  resource_model.tableize
193
193
  end
194
194
 
@@ -15,6 +15,8 @@ module Ddr
15
15
 
16
16
  attribute :target_id, Valkyrie::Types::ID.optional
17
17
 
18
+ self.parent_class = Ddr::Item
19
+
18
20
  def collection
19
21
  self.parent.parent rescue nil
20
22
  end
@@ -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
@@ -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
@@ -55,9 +55,15 @@ module Ddr
55
55
  fields - FILE_FIELDS - reserved_attributes
56
56
  end
57
57
 
58
- delegate :attachable_files, :common_model_name, :governable?, :captionable?, :can_be_streamable?, to: :class
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?
@@ -227,7 +227,11 @@ Devise.setup do |config|
227
227
  last_name: "sn",
228
228
  nickname: "eduPersonNickname"
229
229
  },
230
- extra_fields: ["duDukeID"],
230
+ extra_fields: [
231
+ "duDukeID",
232
+ "isMemberOf",
233
+ "affiliation"
234
+ ],
231
235
  }
232
236
 
233
237
  # ==> Warden configuration
@@ -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("ismemberof")
19
+ split_env("isMemberOf")
20
20
  end
21
21
 
22
22
  private
23
23
 
24
24
  def split_env(attr, delim = ";")
25
- env.fetch(attr, "").split(delim)
25
+ val = env[attr] || env["HTTP_#{attr.upcase}"]
26
+ val ? val.split(delim) : []
26
27
  end
27
28
 
28
29
  end
@@ -1,5 +1,5 @@
1
1
  module Ddr
2
2
  module Core
3
- VERSION = '0.2.2'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
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
- # # Invalid checksum
6
- # class ChecksumInvalid < Error; end
7
- #
5
+ # Invalid checksum
6
+ class ChecksumInvalid < Error; end
7
+
8
8
  # # Derivative generation failure
9
9
  # class DerivativeGenerationFailure < Error; end
10
10
  #
@@ -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.2.2
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-06-11 00:00:00.000000000 Z
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: '1.7'
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: '1.7'
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: '2.0'
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: '2.0'
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