hyrax 2.7.2 → 2.8.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/.circleci/config.yml +60 -33
- data/.regen +1 -0
- data/README.md +4 -4
- data/app/controllers/concerns/hyrax/local_file_downloads_controller_behavior.rb +2 -1
- data/app/indexers/hyrax/deep_indexing_service.rb +21 -12
- data/app/indexers/hyrax/file_set_indexer.rb +6 -1
- data/app/models/concerns/hyrax/solr_document/characterization.rb +5 -1
- data/app/models/concerns/hyrax/solr_document/metadata.rb +8 -7
- data/app/models/hyrax/uploaded_file.rb +0 -2
- data/app/presenters/hyrax/displays_image.rb +29 -7
- data/app/presenters/hyrax/file_set_presenter.rb +5 -0
- data/app/search_builders/hyrax/embargo_search_builder.rb +1 -1
- data/app/search_builders/hyrax/lease_search_builder.rb +1 -1
- data/app/services/hyrax/workflow/workflow_schema.rb +92 -32
- data/hyrax.gemspec +6 -4
- data/lib/hyrax.rb +1 -0
- data/lib/hyrax/version.rb +1 -1
- metadata +64 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 140c7caa34751f7a525eda269abcee6331a9e7d200863e2cbee29d315966de65
|
|
4
|
+
data.tar.gz: 7085c394edd0aa1e90baef7d13f90245d8fb0fb65659e54549cedda0487445e9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 691b84f363281552cbd84f85b767bb5b460ba749e0449aed0498594143767a6cd4dae187a5dd9c88bf3b7bd06a568375da70367b3b8faa674a59f39deaf4df06
|
|
7
|
+
data.tar.gz: e19605afaa51b569ea79e7e99d65fd0576b172cd6dfeb38f815c4dd3a7ac18678bb6b3ff4ac4a5af2b6358bf55c459baba0c4a98b393d20f7d64388f576c894f
|
data/.circleci/config.yml
CHANGED
|
@@ -6,16 +6,13 @@ jobs:
|
|
|
6
6
|
parameters:
|
|
7
7
|
ruby_version:
|
|
8
8
|
type: string
|
|
9
|
-
default: 2.5.
|
|
9
|
+
default: 2.5.8
|
|
10
10
|
bundler_version:
|
|
11
11
|
type: string
|
|
12
12
|
default: 1.17.3
|
|
13
13
|
rails_version:
|
|
14
14
|
type: string
|
|
15
|
-
default: '5.2.
|
|
16
|
-
cache_version:
|
|
17
|
-
type: string
|
|
18
|
-
default: '1-2.x'
|
|
15
|
+
default: '5.2.4.3'
|
|
19
16
|
executor:
|
|
20
17
|
name: 'samvera/ruby'
|
|
21
18
|
ruby_version: << parameters.ruby_version >>
|
|
@@ -28,6 +25,7 @@ jobs:
|
|
|
28
25
|
- samvera/bundle_for_gem:
|
|
29
26
|
ruby_version: << parameters.ruby_version >>
|
|
30
27
|
bundler_version: << parameters.bundler_version >>
|
|
28
|
+
cache_version: '{{ checksum ".regen" }}'
|
|
31
29
|
project: hyrax
|
|
32
30
|
- persist_to_workspace:
|
|
33
31
|
root: ~/
|
|
@@ -40,9 +38,6 @@ jobs:
|
|
|
40
38
|
ruby_version:
|
|
41
39
|
type: string
|
|
42
40
|
default: 2.5.5
|
|
43
|
-
cache_version:
|
|
44
|
-
type: string
|
|
45
|
-
default: '1-2.x'
|
|
46
41
|
executor:
|
|
47
42
|
name: 'samvera/ruby'
|
|
48
43
|
ruby_version: << parameters.ruby_version >>
|
|
@@ -56,16 +51,13 @@ jobs:
|
|
|
56
51
|
parameters:
|
|
57
52
|
ruby_version:
|
|
58
53
|
type: string
|
|
59
|
-
default: 2.5.
|
|
54
|
+
default: 2.5.8
|
|
60
55
|
bundler_version:
|
|
61
56
|
type: string
|
|
62
57
|
default: 1.17.3
|
|
63
58
|
rails_version:
|
|
64
59
|
type: string
|
|
65
|
-
default: '5.2.
|
|
66
|
-
cache_version:
|
|
67
|
-
type: string
|
|
68
|
-
default: '1-2.x'
|
|
60
|
+
default: '5.2.4.3'
|
|
69
61
|
executor:
|
|
70
62
|
name: 'samvera/ruby'
|
|
71
63
|
ruby_version: << parameters.ruby_version >>
|
|
@@ -78,11 +70,11 @@ jobs:
|
|
|
78
70
|
- attach_workspace:
|
|
79
71
|
at: ~/
|
|
80
72
|
- samvera/engine_cart_generate:
|
|
81
|
-
cache_key:
|
|
73
|
+
cache_key: v1-2.x-internal-test-app-{{ checksum "hyrax.gemspec" }}-{{ checksum ".regen" }}-<< parameters.rails_version >>-<< parameters.ruby_version >>
|
|
82
74
|
- samvera/bundle_for_gem:
|
|
83
75
|
ruby_version: << parameters.ruby_version >>
|
|
84
76
|
bundler_version: << parameters.bundler_version >>
|
|
85
|
-
cache_version:
|
|
77
|
+
cache_version: '{{ checksum ".regen" }}'
|
|
86
78
|
project: hyrax
|
|
87
79
|
- persist_to_workspace:
|
|
88
80
|
root: ~/
|
|
@@ -94,13 +86,10 @@ jobs:
|
|
|
94
86
|
parameters:
|
|
95
87
|
ruby_version:
|
|
96
88
|
type: string
|
|
97
|
-
default: 2.5.
|
|
89
|
+
default: 2.5.8
|
|
98
90
|
bundler_version:
|
|
99
91
|
type: string
|
|
100
92
|
default: 1.17.3
|
|
101
|
-
cache_version:
|
|
102
|
-
type: string
|
|
103
|
-
default: '1-2.x'
|
|
104
93
|
executor:
|
|
105
94
|
name: 'samvera/ruby_fcrepo_solr_redis'
|
|
106
95
|
ruby_version: << parameters.ruby_version >>
|
|
@@ -117,39 +106,77 @@ jobs:
|
|
|
117
106
|
- samvera/bundle_for_gem:
|
|
118
107
|
ruby_version: << parameters.ruby_version >>
|
|
119
108
|
bundler_version: << parameters.bundler_version >>
|
|
120
|
-
cache_version:
|
|
109
|
+
cache_version: '{{ checksum ".regen" }}'
|
|
121
110
|
project: hyrax
|
|
122
111
|
- samvera/parallel_rspec
|
|
123
112
|
|
|
124
113
|
workflows:
|
|
125
114
|
version: 2
|
|
126
|
-
|
|
115
|
+
ruby2-5rails5-1:
|
|
127
116
|
jobs:
|
|
128
117
|
- bundle:
|
|
129
|
-
ruby_version: "2.5.
|
|
118
|
+
ruby_version: "2.5.8"
|
|
130
119
|
rails_version: "5.1.7"
|
|
131
|
-
cache_version: "1-2.x"
|
|
132
120
|
- lint:
|
|
133
|
-
ruby_version: "2.5.
|
|
134
|
-
cache_version: "1-2.x"
|
|
121
|
+
ruby_version: "2.5.8"
|
|
135
122
|
requires:
|
|
136
123
|
- bundle
|
|
137
124
|
- build:
|
|
138
|
-
ruby_version: "2.5.
|
|
125
|
+
ruby_version: "2.5.8"
|
|
139
126
|
rails_version: "5.1.7"
|
|
140
|
-
cache_version: "1-2.x"
|
|
141
127
|
requires:
|
|
142
128
|
- bundle
|
|
143
129
|
- test:
|
|
144
|
-
name: "
|
|
145
|
-
ruby_version: "2.5.
|
|
130
|
+
name: "rails5-1"
|
|
131
|
+
ruby_version: "2.5.8"
|
|
146
132
|
requires:
|
|
147
133
|
- build
|
|
148
134
|
- lint
|
|
135
|
+
ruby2-5rails5-2:
|
|
136
|
+
jobs:
|
|
137
|
+
- bundle:
|
|
138
|
+
ruby_version: "2.5.8"
|
|
139
|
+
rails_version: "5.2.4.3"
|
|
140
|
+
- build:
|
|
141
|
+
ruby_version: "2.5.8"
|
|
142
|
+
rails_version: "5.2.4.3"
|
|
143
|
+
requires:
|
|
144
|
+
- bundle
|
|
149
145
|
- test:
|
|
150
|
-
name: "ruby2-
|
|
151
|
-
ruby_version: "2.
|
|
152
|
-
|
|
146
|
+
name: "ruby2-5-8"
|
|
147
|
+
ruby_version: "2.5.8"
|
|
148
|
+
requires:
|
|
149
|
+
- build
|
|
150
|
+
ruby2-6rails5-2:
|
|
151
|
+
jobs:
|
|
152
|
+
- bundle:
|
|
153
|
+
ruby_version: "2.6.6"
|
|
154
|
+
rails_version: "5.2.4.3"
|
|
155
|
+
- build:
|
|
156
|
+
ruby_version: "2.6.6"
|
|
157
|
+
rails_version: "5.2.4.3"
|
|
158
|
+
requires:
|
|
159
|
+
- bundle
|
|
160
|
+
- test:
|
|
161
|
+
name: "ruby2-6-6"
|
|
162
|
+
ruby_version: "2.6.6"
|
|
163
|
+
requires:
|
|
164
|
+
- build
|
|
165
|
+
ruby2-7rails5-2:
|
|
166
|
+
jobs:
|
|
167
|
+
- bundle:
|
|
168
|
+
ruby_version: "2.7.1"
|
|
169
|
+
rails_version: "5.2.4.3"
|
|
170
|
+
bundler_version: "2.1.2"
|
|
171
|
+
- build:
|
|
172
|
+
ruby_version: "2.7.1"
|
|
173
|
+
rails_version: "5.2.4.3"
|
|
174
|
+
bundler_version: "2.1.2"
|
|
175
|
+
requires:
|
|
176
|
+
- bundle
|
|
177
|
+
- test:
|
|
178
|
+
name: "ruby2-7-1"
|
|
179
|
+
ruby_version: "2.7.1"
|
|
180
|
+
bundler_version: "2.1.2"
|
|
153
181
|
requires:
|
|
154
182
|
- build
|
|
155
|
-
- lint
|
data/.regen
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3
|
data/README.md
CHANGED
|
@@ -128,7 +128,7 @@ Note here that the following commands assume you're setting up Hyrax in a develo
|
|
|
128
128
|
|
|
129
129
|
First, you'll need a working Ruby installation. You can install this via your operating system's package manager -- you are likely to get farther with OSX, Linux, or UNIX than Windows but your mileage may vary -- but we recommend using a Ruby version manager such as [RVM](https://rvm.io/) or [rbenv](https://github.com/sstephenson/rbenv).
|
|
130
130
|
|
|
131
|
-
Hyrax supports Ruby 2.3
|
|
131
|
+
Hyrax supports Ruby 2.3 and up. When starting a new project, we recommend using the latest Ruby 2.7 version.
|
|
132
132
|
|
|
133
133
|
## Redis
|
|
134
134
|
|
|
@@ -138,11 +138,11 @@ Starting up Redis will depend on your operating system, and may in fact already
|
|
|
138
138
|
|
|
139
139
|
## Rails
|
|
140
140
|
|
|
141
|
-
Hyrax
|
|
141
|
+
Hyrax 2.x supports Rails 5.1 and 5.2. We recommend the latest Rails 5.2 release.
|
|
142
142
|
|
|
143
143
|
```
|
|
144
144
|
# If you don't already have Rails at your disposal...
|
|
145
|
-
gem install rails -v 5.
|
|
145
|
+
gem install rails -v '5.2.4.3'
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
### JavaScript runtime
|
|
@@ -158,7 +158,7 @@ NOTE: The steps need to be done in order to create a new Hyrax based app.
|
|
|
158
158
|
Generate a new Rails application using the template.
|
|
159
159
|
|
|
160
160
|
```
|
|
161
|
-
rails _5.
|
|
161
|
+
rails _5.2.4.3_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/v2.8.0/template.rb
|
|
162
162
|
```
|
|
163
163
|
|
|
164
164
|
Generating a new Rails application using Hyrax's template above takes cares of a number of steps for you, including:
|
|
@@ -29,6 +29,7 @@ module Hyrax
|
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def send_local_file_contents
|
|
32
|
+
return unless stale?(last_modified: local_file_last_modified, template: false)
|
|
32
33
|
self.status = 200
|
|
33
34
|
prepare_local_file_headers
|
|
34
35
|
# For derivatives stored on the local file system
|
|
@@ -65,7 +66,7 @@ module Hyrax
|
|
|
65
66
|
response.headers['Content-Type'] = local_file_mime_type
|
|
66
67
|
response.headers['Content-Length'] ||= local_file_size.to_s
|
|
67
68
|
# Prevent Rack::ETag from calculating a digest over body
|
|
68
|
-
response.headers['Last-Modified']
|
|
69
|
+
response.headers['Last-Modified'] ||= local_file_last_modified.httpdate
|
|
69
70
|
self.content_type = local_file_mime_type
|
|
70
71
|
end
|
|
71
72
|
|
|
@@ -67,13 +67,13 @@ module Hyrax
|
|
|
67
67
|
# @param [Array] val an array of two elements, first is a string (the uri) and the second is a hash with one key: `:label`
|
|
68
68
|
def append_label_and_uri(solr_doc, solr_field_key, field_info, val)
|
|
69
69
|
val = val.solrize
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
create_and_insert_terms_handler.create_and_insert_terms(solr_field_key,
|
|
71
|
+
val.first,
|
|
72
|
+
field_info.behaviors, solr_doc)
|
|
73
73
|
return unless val.last.is_a? Hash
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
create_and_insert_terms_handler.create_and_insert_terms("#{solr_field_key}_label",
|
|
75
|
+
label(val),
|
|
76
|
+
field_info.behaviors, solr_doc)
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
# Use this method to append a string value from a controlled vocabulary field
|
|
@@ -83,12 +83,12 @@ module Hyrax
|
|
|
83
83
|
# @param [Hash] field_info
|
|
84
84
|
# @param [String] val
|
|
85
85
|
def append_label(solr_doc, solr_field_key, field_info, val)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
create_and_insert_terms_handler.create_and_insert_terms(solr_field_key,
|
|
87
|
+
val,
|
|
88
|
+
field_info.behaviors, solr_doc)
|
|
89
|
+
create_and_insert_terms_handler.create_and_insert_terms("#{solr_field_key}_label",
|
|
90
|
+
val,
|
|
91
|
+
field_info.behaviors, solr_doc)
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
# Return a label for the solrized term:
|
|
@@ -98,5 +98,14 @@ module Hyrax
|
|
|
98
98
|
def label(val)
|
|
99
99
|
val.last[:label].split('$').first
|
|
100
100
|
end
|
|
101
|
+
|
|
102
|
+
# create_and_insert_terms was moved to ActiveFedora::Indexing::Inserter
|
|
103
|
+
# in ActiveFedora 12. broker calls to it through here to ensure an
|
|
104
|
+
# implementation is available
|
|
105
|
+
def create_and_insert_terms_handler
|
|
106
|
+
return self.class if self.class.respond_to?(:create_and_insert_terms)
|
|
107
|
+
|
|
108
|
+
'ActiveFedora::Indexing::Inserter'.constantize
|
|
109
|
+
end
|
|
101
110
|
end
|
|
102
111
|
end
|
|
@@ -27,6 +27,7 @@ module Hyrax
|
|
|
27
27
|
solr_doc['duration_tesim'] = object.duration
|
|
28
28
|
solr_doc['sample_rate_tesim'] = object.sample_rate
|
|
29
29
|
solr_doc['original_checksum_tesim'] = object.original_checksum
|
|
30
|
+
solr_doc['alpha_channels_ssi'] = object.try(:alpha_channels)
|
|
30
31
|
solr_doc['original_file_id_ssi'] = original_file_id
|
|
31
32
|
end
|
|
32
33
|
end
|
|
@@ -40,7 +41,11 @@ module Hyrax
|
|
|
40
41
|
|
|
41
42
|
def original_file_id
|
|
42
43
|
return unless object.original_file
|
|
43
|
-
object.original_file.
|
|
44
|
+
if object.original_file.versions.present?
|
|
45
|
+
ActiveFedora::File.uri_to_id(object.current_content_version_uri)
|
|
46
|
+
else
|
|
47
|
+
object.original_file.id
|
|
48
|
+
end
|
|
44
49
|
end
|
|
45
50
|
|
|
46
51
|
def file_format
|
|
@@ -75,14 +75,15 @@ module Hyrax
|
|
|
75
75
|
attribute :rendering_ids, Solr::Array, solr_name(Hyrax.config.rendering_predicate.value.split(/#|\/|,/).last, :symbol)
|
|
76
76
|
attribute :thumbnail_id, Solr::String, solr_name('hasRelatedImage', :symbol)
|
|
77
77
|
attribute :thumbnail_path, Solr::String, CatalogController.blacklight_config.index.thumbnail_field
|
|
78
|
-
attribute :label, Solr::String, solr_name('label')
|
|
79
|
-
attribute :file_format, Solr::String, solr_name('file_format')
|
|
80
|
-
attribute :suppressed?, Solr::String, solr_name('suppressed', Solrizer::Descriptor.new(:boolean, :stored, :indexed))
|
|
81
78
|
|
|
82
|
-
attribute :
|
|
83
|
-
attribute :
|
|
84
|
-
attribute :
|
|
85
|
-
attribute :
|
|
79
|
+
attribute :label, Solr::String, "label_tesim"
|
|
80
|
+
attribute :file_format, Solr::String, "file_format_tesim"
|
|
81
|
+
attribute :suppressed?, Solr::String, "suppressed_bsi"
|
|
82
|
+
attribute :original_file_id, Solr::String, "original_file_id_ssi"
|
|
83
|
+
attribute :date_modified, Solr::Date, "date_modified_dtsi"
|
|
84
|
+
attribute :date_uploaded, Solr::Date, "date_uploaded_dtsi"
|
|
85
|
+
attribute :create_date, Solr::Date, "system_create_dtsi"
|
|
86
|
+
attribute :modified_date, Solr::Date, "system_modified_dtsi"
|
|
86
87
|
attribute :embargo_release_date, Solr::Date, Hydra.config.permissions.embargo.release_date
|
|
87
88
|
attribute :lease_expiration_date, Solr::Date, Hydra.config.permissions.lease.expiration_date
|
|
88
89
|
end
|
|
@@ -10,20 +10,24 @@ module Hyrax
|
|
|
10
10
|
#
|
|
11
11
|
# @return [IIIFManifest::DisplayImage] the display image required by the manifest builder.
|
|
12
12
|
def display_image
|
|
13
|
-
return nil unless
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
return nil unless solr_document.image? && current_ability.can?(:read, solr_document)
|
|
14
|
+
|
|
15
|
+
latest_file_id = lookup_original_file_id
|
|
16
|
+
|
|
17
|
+
return nil unless latest_file_id
|
|
16
18
|
|
|
17
19
|
url = Hyrax.config.iiif_image_url_builder.call(
|
|
18
|
-
|
|
20
|
+
latest_file_id,
|
|
19
21
|
request.base_url,
|
|
20
22
|
Hyrax.config.iiif_image_size_default
|
|
21
23
|
)
|
|
24
|
+
|
|
22
25
|
# @see https://github.com/samvera-labs/iiif_manifest
|
|
23
26
|
IIIFManifest::DisplayImage.new(url,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
format: image_format([]),
|
|
28
|
+
width: width,
|
|
29
|
+
height: height,
|
|
30
|
+
iiif_endpoint: iiif_endpoint(latest_file_id))
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
private
|
|
@@ -35,5 +39,23 @@ module Hyrax
|
|
|
35
39
|
profile: Hyrax.config.iiif_image_compliance_level_uri
|
|
36
40
|
)
|
|
37
41
|
end
|
|
42
|
+
|
|
43
|
+
def image_format(channels)
|
|
44
|
+
channels.find { |c| c.include?('rgba') }.nil? ? 'jpg' : 'png'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def unindexed_current_file_version
|
|
48
|
+
Rails.logger.warn "Indexed current_file_version for #{id} not found, falling back to Fedora."
|
|
49
|
+
ActiveFedora::File.uri_to_id(::FileSet.find(id).current_content_version_uri)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def lookup_original_file_id
|
|
53
|
+
result = original_file_id
|
|
54
|
+
if result.blank?
|
|
55
|
+
Rails.logger.warn "original_file_id for #{id} not found, falling back to Fedora."
|
|
56
|
+
result = ActiveFedora::File.uri_to_id(::FileSet.find(id).current_content_version_uri)
|
|
57
|
+
end
|
|
58
|
+
result
|
|
59
|
+
end
|
|
38
60
|
end
|
|
39
61
|
end
|
|
@@ -30,8 +30,13 @@ module Hyrax
|
|
|
30
30
|
:embargo_release_date, :lease_expiration_date,
|
|
31
31
|
:depositor, :keyword, :title_or_label, :keyword,
|
|
32
32
|
:date_created, :date_modified, :itemtype,
|
|
33
|
+
:original_file_id,
|
|
33
34
|
to: :solr_document
|
|
34
35
|
|
|
36
|
+
def alpha_channels
|
|
37
|
+
[]
|
|
38
|
+
end
|
|
39
|
+
|
|
35
40
|
def single_use_links
|
|
36
41
|
@single_use_links ||= SingleUseLink.where(itemId: id).map { |link| link_presenter_class.new(link) }
|
|
37
42
|
end
|
|
@@ -14,47 +14,107 @@ module Hyrax
|
|
|
14
14
|
# @see Sipity::Notification
|
|
15
15
|
# @see Sipity::Method
|
|
16
16
|
# @see ./lib/generators/hyrax/templates/workflow.json.erb
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
|
|
18
|
+
# If using dry-validation < 1, create a Dry::Validation::Schema for backwards-compatibility.
|
|
19
|
+
# This schema should never ever change. If you need to modify it, upgrade to dry-validation >= 1
|
|
20
|
+
# and use the Dry::Validation::Contract subclass below.
|
|
21
|
+
if defined? Dry::Validation::Schema
|
|
22
|
+
Deprecation.warn(self, 'The Dry::Validation::Schema implemenation of Hyrax::Workflow::WorkflowSchema is deprecated. ' \
|
|
23
|
+
'Please upgrade to dry-validation >= 1 to use the Dry::Validation::Contract implementation which will be part of Hyrax 3.0')
|
|
24
|
+
WorkflowSchema = Dry::Validation.Schema do
|
|
25
|
+
configure do
|
|
26
|
+
def self.messages
|
|
27
|
+
Dry::Validation::Messages.default.merge(
|
|
28
|
+
en: { errors: { constant_name?: 'must be an initialized Ruby constant' } }
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def constant_name?(value)
|
|
33
|
+
value.constantize
|
|
34
|
+
true
|
|
35
|
+
rescue NameError
|
|
36
|
+
false
|
|
37
|
+
end
|
|
23
38
|
end
|
|
24
39
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
40
|
+
required(:workflows).each do
|
|
41
|
+
required(:name).filled(:str?) # Sipity::Workflow#name
|
|
42
|
+
optional(:label).filled(:str?) # Sipity::Workflow#label
|
|
43
|
+
optional(:description).filled(:str?) # Sipity::Workflow#description
|
|
44
|
+
optional(:allows_access_grant).filled(:bool?) # Sipity::Workflow#allows_access_grant?
|
|
45
|
+
required(:actions).each do
|
|
46
|
+
schema do
|
|
47
|
+
required(:name).filled(:str?) # Sipity::WorkflowAction#name
|
|
48
|
+
required(:from_states).each do
|
|
49
|
+
schema do
|
|
50
|
+
required(:names) { array? { each(:str?) } } # Sipity::WorkflowState#name
|
|
51
|
+
required(:roles) { array? { each(:str?) } } # Sipity::Role#name
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
optional(:transition_to).filled(:str?) # Sipity::WorkflowState#name
|
|
55
|
+
optional(:notifications).each do
|
|
56
|
+
schema do
|
|
57
|
+
required(:name).value(:constant_name?) # Sipity::Notification#name
|
|
58
|
+
required(:notification_type).value(included_in?: Sipity::Notification.valid_notification_types)
|
|
59
|
+
required(:to) { array? { each(:str?) } }
|
|
60
|
+
optional(:cc) { array? { each(:str?) } }
|
|
61
|
+
optional(:bcc) { array? { each(:str?) } }
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
optional(:methods) { array? { each(:str?) } } # See it_behaves_like "a Hyrax workflow method"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
30
67
|
end
|
|
31
68
|
end
|
|
69
|
+
elsif defined? Dry::Validation::Contract
|
|
70
|
+
# For dry-validation >= 1
|
|
71
|
+
class WorkflowSchema < Dry::Validation::Contract
|
|
72
|
+
class Types
|
|
73
|
+
include Dry::Types()
|
|
32
74
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
required(:actions).each do
|
|
39
|
-
schema do
|
|
40
|
-
required(:name).filled(:str?) # Sipity::WorkflowAction#name
|
|
41
|
-
required(:from_states).each do
|
|
42
|
-
schema do
|
|
43
|
-
required(:names) { array? { each(:str?) } } # Sipity::WorkflowState#name
|
|
44
|
-
required(:roles) { array? { each(:str?) } } # Sipity::Role#name
|
|
45
|
-
end
|
|
75
|
+
Constant = Types::Class.constructor do |v|
|
|
76
|
+
begin
|
|
77
|
+
v.constantize
|
|
78
|
+
rescue NameError => _err
|
|
79
|
+
v
|
|
46
80
|
end
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Wrap the result for backwards-compatibility. This will be removed in Hyrax 3.0.
|
|
85
|
+
class ResultWrapper < SimpleDelegator
|
|
86
|
+
def messages(opts = {})
|
|
87
|
+
errors(opts)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Provide a class method for backwards-compatibility. This will be removed in Hyrax 3.0.
|
|
92
|
+
def self.call(data)
|
|
93
|
+
ResultWrapper.new(new.call(data))
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
params do
|
|
97
|
+
required(:workflows).array(:hash) do
|
|
98
|
+
required(:name).filled(:string) # Sipity::Workflow#name
|
|
99
|
+
optional(:label).filled(:string) # Sipity::Workflow#label
|
|
100
|
+
optional(:description).filled(:string) # Sipity::Workflow#description
|
|
101
|
+
optional(:allows_access_grant).filled(:bool) # Sipity::Workflow#allows_access_grant?
|
|
102
|
+
required(:actions).array(:hash) do
|
|
103
|
+
required(:name).filled(:string) # Sipity::WorkflowAction#name
|
|
104
|
+
required(:from_states).array(:hash) do
|
|
105
|
+
required(:names) { array? { each(:string) } } # Sipity::WorkflowState#name
|
|
106
|
+
required(:roles) { array? { each(:string) } } # Sipity::Role#name
|
|
107
|
+
end
|
|
108
|
+
optional(:transition_to).filled(:string) # Sipity::WorkflowState#name
|
|
109
|
+
optional(:notifications).array(:hash) do
|
|
110
|
+
required(:name).value(Types::Constant) # Sipity::Notification#name
|
|
51
111
|
required(:notification_type).value(included_in?: Sipity::Notification.valid_notification_types)
|
|
52
|
-
required(:to) { array? { each(:
|
|
53
|
-
optional(:cc) { array? { each(:
|
|
54
|
-
optional(:bcc) { array? { each(:
|
|
112
|
+
required(:to) { array? { each(:string) } }
|
|
113
|
+
optional(:cc) { array? { each(:string) } }
|
|
114
|
+
optional(:bcc) { array? { each(:string) } }
|
|
55
115
|
end
|
|
56
116
|
end
|
|
57
|
-
optional(:methods) { array? { each(:
|
|
117
|
+
optional(:methods) { array? { each(:string) } } # See it_behaves_like "a Hyrax workflow method"
|
|
58
118
|
end
|
|
59
119
|
end
|
|
60
120
|
end
|
data/hyrax.gemspec
CHANGED
|
@@ -30,7 +30,7 @@ SUMMARY
|
|
|
30
30
|
# http://guides.rubyonrails.org/maintenance_policy.html
|
|
31
31
|
spec.add_dependency 'rails', '~> 5.0'
|
|
32
32
|
|
|
33
|
-
spec.add_dependency 'active-fedora', '
|
|
33
|
+
spec.add_dependency 'active-fedora', '>= 11.5.2', '< 12.2'
|
|
34
34
|
spec.add_dependency 'almond-rails', '~> 0.1'
|
|
35
35
|
spec.add_dependency 'awesome_nested_set', '~> 3.1'
|
|
36
36
|
spec.add_dependency 'blacklight', '~> 6.14'
|
|
@@ -40,9 +40,9 @@ SUMMARY
|
|
|
40
40
|
spec.add_dependency 'carrierwave', '~> 1.0'
|
|
41
41
|
spec.add_dependency 'clipboard-rails', '~> 1.5'
|
|
42
42
|
spec.add_dependency 'dry-equalizer', '~> 0.2'
|
|
43
|
-
spec.add_dependency 'dry-struct', '
|
|
43
|
+
spec.add_dependency 'dry-struct', '>= 0.1', '< 2.0'
|
|
44
44
|
spec.add_dependency 'dry-transaction', '~> 0.11'
|
|
45
|
-
spec.add_dependency 'dry-validation', '
|
|
45
|
+
spec.add_dependency 'dry-validation', '>= 0.9', '< 2.0'
|
|
46
46
|
spec.add_dependency 'flipflop', '~> 2.3'
|
|
47
47
|
# Pin more tightly because 0.x gems are potentially unstable
|
|
48
48
|
spec.add_dependency 'flot-rails', '~> 0.0.6'
|
|
@@ -58,7 +58,7 @@ SUMMARY
|
|
|
58
58
|
# Pin more tightly because 0.x gems are potentially unstable
|
|
59
59
|
spec.add_dependency 'kaminari_route_prefix', '~> 0.1.1'
|
|
60
60
|
spec.add_dependency 'legato', '~> 0.3'
|
|
61
|
-
spec.add_dependency 'linkeddata' # Required for getting values from geonames
|
|
61
|
+
spec.add_dependency 'linkeddata', '~> 3.1' # Required for getting values from geonames
|
|
62
62
|
spec.add_dependency 'mailboxer', '~> 0.12'
|
|
63
63
|
spec.add_dependency 'nest', '~> 3.1'
|
|
64
64
|
spec.add_dependency 'noid-rails', '~> 3.0.0'
|
|
@@ -70,12 +70,14 @@ SUMMARY
|
|
|
70
70
|
spec.add_dependency 'qa', '~> 2.0' # questioning_authority
|
|
71
71
|
spec.add_dependency 'rails_autolink', '~> 1.1'
|
|
72
72
|
spec.add_dependency 'rdf-rdfxml' # controlled vocabulary importer
|
|
73
|
+
spec.add_dependency 'rdf-vocab', '< 3.1.5'
|
|
73
74
|
spec.add_dependency 'redis-namespace', '~> 1.5'
|
|
74
75
|
spec.add_dependency 'redlock', '>= 0.1.2'
|
|
75
76
|
spec.add_dependency 'retriable', '>= 2.9', '< 4.0'
|
|
76
77
|
spec.add_dependency 'samvera-nesting_indexer', '~> 2.0'
|
|
77
78
|
spec.add_dependency 'select2-rails', '~> 3.5'
|
|
78
79
|
spec.add_dependency 'signet'
|
|
80
|
+
spec.add_dependency 'solrizer', '>= 3.4', '< 5'
|
|
79
81
|
spec.add_dependency 'tinymce-rails', '~> 4.1'
|
|
80
82
|
|
|
81
83
|
# temporary pin to 2.17 due to failures caused in 2.18.0
|
data/lib/hyrax.rb
CHANGED
data/lib/hyrax/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hyrax
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Coyne
|
|
@@ -14,7 +14,7 @@ authors:
|
|
|
14
14
|
autorequire:
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
|
-
date: 2020-
|
|
17
|
+
date: 2020-06-26 00:00:00.000000000 Z
|
|
18
18
|
dependencies:
|
|
19
19
|
- !ruby/object:Gem::Dependency
|
|
20
20
|
name: rails
|
|
@@ -34,22 +34,22 @@ dependencies:
|
|
|
34
34
|
name: active-fedora
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
|
-
- - "~>"
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '11.5'
|
|
40
37
|
- - ">="
|
|
41
38
|
- !ruby/object:Gem::Version
|
|
42
39
|
version: 11.5.2
|
|
40
|
+
- - "<"
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: '12.2'
|
|
43
43
|
type: :runtime
|
|
44
44
|
prerelease: false
|
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
46
|
requirements:
|
|
47
|
-
- - "~>"
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: '11.5'
|
|
50
47
|
- - ">="
|
|
51
48
|
- !ruby/object:Gem::Version
|
|
52
49
|
version: 11.5.2
|
|
50
|
+
- - "<"
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '12.2'
|
|
53
53
|
- !ruby/object:Gem::Dependency
|
|
54
54
|
name: almond-rails
|
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -180,16 +180,22 @@ dependencies:
|
|
|
180
180
|
name: dry-struct
|
|
181
181
|
requirement: !ruby/object:Gem::Requirement
|
|
182
182
|
requirements:
|
|
183
|
-
- - "
|
|
183
|
+
- - ">="
|
|
184
184
|
- !ruby/object:Gem::Version
|
|
185
185
|
version: '0.1'
|
|
186
|
+
- - "<"
|
|
187
|
+
- !ruby/object:Gem::Version
|
|
188
|
+
version: '2.0'
|
|
186
189
|
type: :runtime
|
|
187
190
|
prerelease: false
|
|
188
191
|
version_requirements: !ruby/object:Gem::Requirement
|
|
189
192
|
requirements:
|
|
190
|
-
- - "
|
|
193
|
+
- - ">="
|
|
191
194
|
- !ruby/object:Gem::Version
|
|
192
195
|
version: '0.1'
|
|
196
|
+
- - "<"
|
|
197
|
+
- !ruby/object:Gem::Version
|
|
198
|
+
version: '2.0'
|
|
193
199
|
- !ruby/object:Gem::Dependency
|
|
194
200
|
name: dry-transaction
|
|
195
201
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -208,16 +214,22 @@ dependencies:
|
|
|
208
214
|
name: dry-validation
|
|
209
215
|
requirement: !ruby/object:Gem::Requirement
|
|
210
216
|
requirements:
|
|
211
|
-
- - "
|
|
217
|
+
- - ">="
|
|
212
218
|
- !ruby/object:Gem::Version
|
|
213
219
|
version: '0.9'
|
|
220
|
+
- - "<"
|
|
221
|
+
- !ruby/object:Gem::Version
|
|
222
|
+
version: '2.0'
|
|
214
223
|
type: :runtime
|
|
215
224
|
prerelease: false
|
|
216
225
|
version_requirements: !ruby/object:Gem::Requirement
|
|
217
226
|
requirements:
|
|
218
|
-
- - "
|
|
227
|
+
- - ">="
|
|
219
228
|
- !ruby/object:Gem::Version
|
|
220
229
|
version: '0.9'
|
|
230
|
+
- - "<"
|
|
231
|
+
- !ruby/object:Gem::Version
|
|
232
|
+
version: '2.0'
|
|
221
233
|
- !ruby/object:Gem::Dependency
|
|
222
234
|
name: flipflop
|
|
223
235
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -422,16 +434,16 @@ dependencies:
|
|
|
422
434
|
name: linkeddata
|
|
423
435
|
requirement: !ruby/object:Gem::Requirement
|
|
424
436
|
requirements:
|
|
425
|
-
- - "
|
|
437
|
+
- - "~>"
|
|
426
438
|
- !ruby/object:Gem::Version
|
|
427
|
-
version: '
|
|
439
|
+
version: '3.1'
|
|
428
440
|
type: :runtime
|
|
429
441
|
prerelease: false
|
|
430
442
|
version_requirements: !ruby/object:Gem::Requirement
|
|
431
443
|
requirements:
|
|
432
|
-
- - "
|
|
444
|
+
- - "~>"
|
|
433
445
|
- !ruby/object:Gem::Version
|
|
434
|
-
version: '
|
|
446
|
+
version: '3.1'
|
|
435
447
|
- !ruby/object:Gem::Dependency
|
|
436
448
|
name: mailboxer
|
|
437
449
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -592,6 +604,20 @@ dependencies:
|
|
|
592
604
|
- - ">="
|
|
593
605
|
- !ruby/object:Gem::Version
|
|
594
606
|
version: '0'
|
|
607
|
+
- !ruby/object:Gem::Dependency
|
|
608
|
+
name: rdf-vocab
|
|
609
|
+
requirement: !ruby/object:Gem::Requirement
|
|
610
|
+
requirements:
|
|
611
|
+
- - "<"
|
|
612
|
+
- !ruby/object:Gem::Version
|
|
613
|
+
version: 3.1.5
|
|
614
|
+
type: :runtime
|
|
615
|
+
prerelease: false
|
|
616
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
617
|
+
requirements:
|
|
618
|
+
- - "<"
|
|
619
|
+
- !ruby/object:Gem::Version
|
|
620
|
+
version: 3.1.5
|
|
595
621
|
- !ruby/object:Gem::Dependency
|
|
596
622
|
name: redis-namespace
|
|
597
623
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -682,6 +708,26 @@ dependencies:
|
|
|
682
708
|
- - ">="
|
|
683
709
|
- !ruby/object:Gem::Version
|
|
684
710
|
version: '0'
|
|
711
|
+
- !ruby/object:Gem::Dependency
|
|
712
|
+
name: solrizer
|
|
713
|
+
requirement: !ruby/object:Gem::Requirement
|
|
714
|
+
requirements:
|
|
715
|
+
- - ">="
|
|
716
|
+
- !ruby/object:Gem::Version
|
|
717
|
+
version: '3.4'
|
|
718
|
+
- - "<"
|
|
719
|
+
- !ruby/object:Gem::Version
|
|
720
|
+
version: '5'
|
|
721
|
+
type: :runtime
|
|
722
|
+
prerelease: false
|
|
723
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
724
|
+
requirements:
|
|
725
|
+
- - ">="
|
|
726
|
+
- !ruby/object:Gem::Version
|
|
727
|
+
version: '3.4'
|
|
728
|
+
- - "<"
|
|
729
|
+
- !ruby/object:Gem::Version
|
|
730
|
+
version: '5'
|
|
685
731
|
- !ruby/object:Gem::Dependency
|
|
686
732
|
name: tinymce-rails
|
|
687
733
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1104,6 +1150,7 @@ files:
|
|
|
1104
1150
|
- ".github/stale.yml"
|
|
1105
1151
|
- ".gitignore"
|
|
1106
1152
|
- ".hound.yml"
|
|
1153
|
+
- ".regen"
|
|
1107
1154
|
- ".rspec"
|
|
1108
1155
|
- ".rubocop.yml"
|
|
1109
1156
|
- ".rubocop_fixme.yml"
|
|
@@ -2387,7 +2434,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
2387
2434
|
- !ruby/object:Gem::Version
|
|
2388
2435
|
version: '0'
|
|
2389
2436
|
requirements: []
|
|
2390
|
-
rubygems_version: 3.
|
|
2437
|
+
rubygems_version: 3.0.3
|
|
2391
2438
|
signing_key:
|
|
2392
2439
|
specification_version: 4
|
|
2393
2440
|
summary: Hyrax is a front-end based on the robust Samvera framework, providing a user
|