ddr-core 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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