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