hyrax 3.0.1 → 3.0.2
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 +19 -8
- data/.dassie/config/role_map.yml +2 -0
- data/.dassie/db/seeds.rb +1 -1
- data/.env +1 -1
- data/CONTAINERS.md +20 -0
- data/app/actors/hyrax/actors/file_set_actor.rb +10 -5
- data/app/controllers/hyrax/admin/permission_template_accesses_controller.rb +0 -4
- data/app/forms/hyrax/forms/resource_form.rb +11 -1
- data/app/helpers/hyrax/dashboard_helper_behavior.rb +20 -5
- data/app/helpers/hyrax/embargo_helper.rb +4 -0
- data/app/helpers/hyrax/lease_helper.rb +4 -0
- data/app/helpers/hyrax/url_helper.rb +4 -1
- data/app/indexers/hyrax/valkyrie_file_set_indexer.rb +2 -0
- data/app/indexers/hyrax/valkyrie_work_indexer.rb +1 -1
- data/app/jobs/ingest_local_file_job.rb +18 -2
- data/app/models/collection_branding_info.rb +25 -9
- data/app/models/concerns/hyrax/embargoable.rb +24 -0
- data/app/models/concerns/hyrax/work_behavior.rb +1 -1
- data/app/presenters/hyrax/admin_set_options_presenter.rb +13 -1
- data/app/presenters/hyrax/pcdm_member_presenter_factory.rb +119 -0
- data/app/presenters/hyrax/work_show_presenter.rb +5 -1
- data/app/search_builders/hyrax/collection_member_search_builder.rb +6 -1
- data/app/search_builders/hyrax/my/collections_search_builder.rb +1 -1
- data/app/search_builders/hyrax/nested_collections_parent_search_builder.rb +1 -1
- data/app/search_builders/hyrax/single_collection_search_builder.rb +1 -1
- data/app/services/hyrax/contextual_path.rb +1 -1
- data/app/services/hyrax/edit_permissions_service.rb +47 -21
- data/app/services/hyrax/find_objects_via_solr_service.rb +27 -0
- data/app/services/hyrax/multiple_membership_checker.rb +6 -2
- data/app/services/hyrax/solr_query_builder_service.rb +17 -3
- data/app/services/hyrax/visibility_intention.rb +20 -2
- data/app/views/hyrax/base/_form_child_work_relationships.html.erb +1 -1
- data/app/views/hyrax/base/_form_visibility_error.html.erb +2 -0
- data/app/views/hyrax/base/_guts4form.html.erb +1 -1
- data/app/views/hyrax/base/_show_actions.html.erb +1 -1
- data/app/views/hyrax/base/_work_button_row.html.erb +1 -1
- data/app/views/hyrax/batch_uploads/_form.html.erb +1 -1
- data/bin/db-migrate-seed.sh +3 -1
- data/bin/hyrax-entrypoint.sh +0 -14
- data/bin/solrcloud-assign-configset.sh +5 -0
- data/bin/solrcloud-upload-configset.sh +14 -5
- data/chart/hyrax/Chart.yaml +8 -4
- data/chart/hyrax/README.md +5 -4
- data/chart/hyrax/templates/_helpers.tpl +14 -0
- data/chart/hyrax/templates/branding-pvc.yaml +2 -2
- data/chart/hyrax/templates/configmap-env.yaml +7 -1
- data/chart/hyrax/templates/deployment-worker.yaml +39 -5
- data/chart/hyrax/templates/deployment.yaml +42 -0
- data/chart/hyrax/templates/derivatives-pvc.yaml +2 -2
- data/chart/hyrax/templates/ingress.yaml +13 -4
- data/chart/hyrax/templates/secrets.yaml +8 -0
- data/chart/hyrax/templates/uploads-pvc.yaml +2 -2
- data/chart/hyrax/values.yaml +71 -1
- data/config/initializers/valkryrie_storage.rb +7 -0
- data/docker-compose.yml +38 -8
- data/documentation/developing-your-hyrax-based-app.md +3 -3
- data/documentation/legacyREADME.md +4 -4
- data/lib/hyrax/configuration.rb +12 -0
- data/lib/hyrax/engine.rb +1 -0
- data/lib/hyrax/resource_name.rb +1 -0
- data/lib/hyrax/specs/capybara.rb +2 -2
- data/lib/hyrax/valkyrie_simple_path_generator.rb +20 -0
- data/lib/hyrax/version.rb +1 -1
- data/lib/wings.rb +0 -21
- data/lib/wings/active_fedora_converter/default_work.rb +15 -0
- data/lib/wings/model_transformer.rb +17 -1
- data/lib/wings/setup.rb +1 -0
- data/template.rb +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83e192b584ccacb1817682f20c3f92863142dcd6bb0f5cf3ad94510c9bfd8b6e
|
4
|
+
data.tar.gz: 0f4e5459438aa41d335cad94e3c4fa9167d5dbc7eb52323cbb56a532e91c76a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc71e039869a7b368cdeb864333683d3b9079fb2d4191d70c8bbdb1cd32c8686060814846590d5b418321c9f57b28ab8b35989a86b02282453761a2c90d26467
|
7
|
+
data.tar.gz: 6540b1bcb3b98e523cf5d1790ca160ccb39a1cc0ecec77e2747205727c699710cb67f063fafd3030f8433b8ce0ce85ecc3b075a8e744ad5a8519a8a61ecd4e34
|
data/.circleci/config.yml
CHANGED
@@ -12,7 +12,7 @@ jobs:
|
|
12
12
|
default: 1.17.3
|
13
13
|
rails_version:
|
14
14
|
type: string
|
15
|
-
default: '5.2.
|
15
|
+
default: '5.2.6'
|
16
16
|
executor:
|
17
17
|
name: 'samvera/ruby'
|
18
18
|
ruby_version: << parameters.ruby_version >>
|
@@ -22,6 +22,17 @@ jobs:
|
|
22
22
|
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
|
23
23
|
steps:
|
24
24
|
- samvera/cached_checkout
|
25
|
+
|
26
|
+
- run:
|
27
|
+
name: Check for a branch named 'master'
|
28
|
+
command: |
|
29
|
+
git fetch --all --quiet --prune --prune-tags
|
30
|
+
if [[ -n "$(git branch --all --list master */master)" ]]; then
|
31
|
+
echo "A branch named 'master' was found. Please remove it."
|
32
|
+
echo "$(git branch --all --list master */master)"
|
33
|
+
fi
|
34
|
+
[[ -z "$(git branch --all --list master */master)" ]]
|
35
|
+
|
25
36
|
- samvera/bundle_for_gem:
|
26
37
|
ruby_version: << parameters.ruby_version >>
|
27
38
|
bundler_version: << parameters.bundler_version >>
|
@@ -63,7 +74,7 @@ jobs:
|
|
63
74
|
default: 1.17.3
|
64
75
|
rails_version:
|
65
76
|
type: string
|
66
|
-
default: '5.2.
|
77
|
+
default: '5.2.6'
|
67
78
|
executor:
|
68
79
|
name: 'samvera/ruby_fcrepo_solr_redis_postgres'
|
69
80
|
ruby_version: << parameters.ruby_version >>
|
@@ -131,10 +142,10 @@ workflows:
|
|
131
142
|
jobs:
|
132
143
|
- bundle:
|
133
144
|
ruby_version: "2.5.8"
|
134
|
-
rails_version: "5.2.
|
145
|
+
rails_version: "5.2.6"
|
135
146
|
- build:
|
136
147
|
ruby_version: "2.5.8"
|
137
|
-
rails_version: "5.2.
|
148
|
+
rails_version: "5.2.6"
|
138
149
|
requires:
|
139
150
|
- bundle
|
140
151
|
- test:
|
@@ -146,10 +157,10 @@ workflows:
|
|
146
157
|
jobs:
|
147
158
|
- bundle:
|
148
159
|
ruby_version: "2.6.6"
|
149
|
-
rails_version: "5.2.
|
160
|
+
rails_version: "5.2.6"
|
150
161
|
- build:
|
151
162
|
ruby_version: "2.6.6"
|
152
|
-
rails_version: "5.2.
|
163
|
+
rails_version: "5.2.6"
|
153
164
|
requires:
|
154
165
|
- bundle
|
155
166
|
- test:
|
@@ -167,11 +178,11 @@ workflows:
|
|
167
178
|
jobs:
|
168
179
|
- bundle:
|
169
180
|
ruby_version: "2.7.2"
|
170
|
-
rails_version: "5.2.
|
181
|
+
rails_version: "5.2.6"
|
171
182
|
bundler_version: "2.1.4"
|
172
183
|
- build:
|
173
184
|
ruby_version: "2.7.2"
|
174
|
-
rails_version: "5.2.
|
185
|
+
rails_version: "5.2.6"
|
175
186
|
bundler_version: "2.1.4"
|
176
187
|
requires:
|
177
188
|
- bundle
|
data/.dassie/config/role_map.yml
CHANGED
data/.dassie/db/seeds.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
|
7
7
|
# Character.create(name: 'Luke', movie: movies.first)
|
8
8
|
|
9
|
-
Hyrax::Engine.load_seed
|
9
|
+
Hyrax::Engine.load_seed unless ActiveModel::Type::Boolean.new.cast(ENV["SKIP_HYRAX_ENGINE_SEED"])
|
10
10
|
|
11
11
|
puts "\n== Loading users"
|
12
12
|
User.where(email: 'admin@example.com').first_or_create do |f|
|
data/.env
CHANGED
data/CONTAINERS.md
CHANGED
@@ -107,6 +107,26 @@ I (Jeremy) find myself wanting to debug the application. This requires a somewh
|
|
107
107
|
|
108
108
|
This advice comes from [Debugging Rails App With Docker Compose: How to use Byebug in a dockerized rails app](https://medium.com/gogox-technology/debugging-rails-app-with-docker-compose-39a3767962f4).
|
109
109
|
|
110
|
+
### Troubleshooting
|
111
|
+
|
112
|
+
#### Bad Address SOLR
|
113
|
+
|
114
|
+
With `docker-compose up` running, if you see the following, then there may be issues with file permissions:
|
115
|
+
|
116
|
+
```
|
117
|
+
db_migrate_1 | waiting for solr:8983
|
118
|
+
db_migrate_1 | nc: bad address 'solr'
|
119
|
+
```
|
120
|
+
|
121
|
+
Check the Docker application logs and look for permission errors:
|
122
|
+
|
123
|
+
```
|
124
|
+
Executing /opt/docker-solr/scripts/precreate-core hyrax_test /opt/solr/server/configsets/hyraxconf
|
125
|
+
cp: cannot create directory '/var/solr/data/hyrax_test': Permission denied
|
126
|
+
```
|
127
|
+
|
128
|
+
The solution that appears to work is to `docker-compose down --volumes`; This will tear down the docker instance, and remove the volumes. You can then run `docker-compose up` to get back to work. _**Note:** the `--volumes` switch will remove all custom data._
|
129
|
+
|
110
130
|
<!-- NOTE: This title is referenced in the top-level documentation/developing-your-hyrax-based-app.md. Keep that in mind if you change it. -->
|
111
131
|
## Docker Image for Hyrax-based Applications
|
112
132
|
|
@@ -31,10 +31,9 @@ module Hyrax
|
|
31
31
|
# hand. Do this because we don't have the underlying UploadedFile instance
|
32
32
|
file_actor = build_file_actor(relation)
|
33
33
|
file_actor.ingest_file(wrapper!(file: file, relation: relation))
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
InheritPermissionsJob.perform_later(file_set.parent)
|
34
|
+
parent = parent_for(file_set: file_set)
|
35
|
+
VisibilityCopyJob.perform_later(parent)
|
36
|
+
InheritPermissionsJob.perform_later(parent)
|
38
37
|
else
|
39
38
|
IngestJob.perform_later(wrapper!(file: file, relation: relation))
|
40
39
|
end
|
@@ -138,6 +137,12 @@ module Hyrax
|
|
138
137
|
@ability ||= ::Ability.new(user)
|
139
138
|
end
|
140
139
|
|
140
|
+
# @param file_set [FileSet]
|
141
|
+
# @return [ActiveFedora::Base]
|
142
|
+
def parent_for(file_set:)
|
143
|
+
file_set.parent
|
144
|
+
end
|
145
|
+
|
141
146
|
def build_file_actor(relation)
|
142
147
|
fs = use_valkyrie ? file_set.valkyrie_resource : file_set
|
143
148
|
file_actor_class.new(fs, relation, user, use_valkyrie: use_valkyrie)
|
@@ -179,7 +184,7 @@ module Hyrax
|
|
179
184
|
# Although ActiveFedora clears the children nodes it leaves those fields in Solr populated.
|
180
185
|
# rubocop:disable Metrics/CyclomaticComplexity
|
181
186
|
def unlink_from_work
|
182
|
-
work = file_set
|
187
|
+
work = parent_for(file_set: file_set)
|
183
188
|
return unless work && (work.thumbnail_id == file_set.id || work.representative_id == file_set.id || work.rendering_ids.include?(file_set.id))
|
184
189
|
work.thumbnail = nil if work.thumbnail_id == file_set.id
|
185
190
|
work.representative = nil if work.representative_id == file_set.id
|
@@ -30,10 +30,6 @@ module Hyrax
|
|
30
30
|
false
|
31
31
|
end
|
32
32
|
|
33
|
-
def update_access(manage_changed:)
|
34
|
-
permission_template_form.update_access(manage_changed: manage_changed)
|
35
|
-
end
|
36
|
-
|
37
33
|
def after_destroy_success
|
38
34
|
if source.admin_set?
|
39
35
|
redirect_to hyrax.edit_admin_admin_set_path(source_id,
|
@@ -91,7 +91,12 @@ module Hyrax
|
|
91
91
|
property :date_uploaded, readable: false
|
92
92
|
property :agreement_accepted, virtual: true, default: false, prepopulator: ->(_opts) { self.agreement_accepted = !model.new_record }
|
93
93
|
|
94
|
-
collection
|
94
|
+
collection(:permissions,
|
95
|
+
virtual: true,
|
96
|
+
default: [],
|
97
|
+
form: Permission,
|
98
|
+
populator: :permission_populator,
|
99
|
+
prepopulator: ->(_opts) { self.permissions = Hyrax::AccessControl.for(resource: model).permissions })
|
95
100
|
|
96
101
|
# virtual properties for embargo/lease;
|
97
102
|
property :embargo_release_date, virtual: true, prepopulator: ->(_opts) { self.embargo_release_date = model.embargo&.embargo_release_date }
|
@@ -201,6 +206,11 @@ module Hyrax
|
|
201
206
|
|
202
207
|
private
|
203
208
|
|
209
|
+
# https://trailblazer.to/2.1/docs/reform.html#reform-populators-populator-collections
|
210
|
+
def permission_populator(collection:, index:, **)
|
211
|
+
Permission.new(collection[index])
|
212
|
+
end
|
213
|
+
|
204
214
|
def _form_field_definitions
|
205
215
|
self.class.definitions
|
206
216
|
end
|
@@ -7,25 +7,40 @@ module Hyrax
|
|
7
7
|
|
8
8
|
# @param user [User]
|
9
9
|
# @param where [Hash] applied as the where clause when querying the Hyrax::WorkRelation
|
10
|
-
#
|
10
|
+
# @return [Integer] number of works matching the where that the user deposited
|
11
11
|
# @see Hyrax::WorkRelation
|
12
12
|
def number_of_works(user = current_user, where: { generic_type_sim: "Work" })
|
13
|
-
|
14
|
-
|
13
|
+
field_pairs = field_pairs(user)
|
14
|
+
field_pairs.merge!(where)
|
15
|
+
count(Hyrax::SolrQueryBuilderService.construct_query(field_pairs))
|
15
16
|
rescue RSolr::Error::ConnectionRefused
|
16
17
|
'n/a'
|
17
18
|
end
|
18
19
|
|
20
|
+
# @param user [User]
|
21
|
+
# @return [Integer] number of FileSets the user deposited
|
19
22
|
def number_of_files(user = current_user)
|
20
|
-
::
|
23
|
+
count(Hyrax::SolrQueryBuilderService.construct_query_for_model(::FileSet, field_pairs(user)))
|
21
24
|
rescue RSolr::Error::ConnectionRefused
|
22
25
|
'n/a'
|
23
26
|
end
|
24
27
|
|
28
|
+
# @param user [User]
|
29
|
+
# @return [Integer] number of Collections the user created
|
25
30
|
def number_of_collections(user = current_user)
|
26
|
-
::
|
31
|
+
count(Hyrax::SolrQueryBuilderService.construct_query_for_model(::Collection, field_pairs(user)))
|
27
32
|
rescue RSolr::Error::ConnectionRefused
|
28
33
|
'n/a'
|
29
34
|
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def field_pairs(user)
|
39
|
+
{ DepositSearchBuilder.depositor_field => user.user_key }
|
40
|
+
end
|
41
|
+
|
42
|
+
def count(query)
|
43
|
+
Hyrax::SolrService.count(query)
|
44
|
+
end
|
30
45
|
end
|
31
46
|
end
|
@@ -25,6 +25,10 @@ module Hyrax
|
|
25
25
|
# holder until we switch to Valkyrie::ChangeSet instead of Form
|
26
26
|
# objects
|
27
27
|
def embargo_enforced?(resource)
|
28
|
+
# This is a guard; from the UI rendering perspective, there's no
|
29
|
+
# active embargo enforcement until the object is saved.
|
30
|
+
return false unless resource.persisted?
|
31
|
+
|
28
32
|
case resource
|
29
33
|
when Hydra::AccessControls::Embargoable
|
30
34
|
!resource.embargo_release_date.nil?
|
@@ -25,6 +25,10 @@ module Hyrax
|
|
25
25
|
# holder until we switch to Valkyrie::ChangeSet instead of Form
|
26
26
|
# objects
|
27
27
|
def lease_enforced?(resource)
|
28
|
+
# This is a guard; from the UI rendering perspective, there's no
|
29
|
+
# active lease enforcement until the object is saved.
|
30
|
+
return false unless resource.persisted?
|
31
|
+
|
28
32
|
case resource
|
29
33
|
when Hydra::AccessControls::Embargoable
|
30
34
|
!resource.lease_expiration_date.nil?
|
@@ -4,7 +4,10 @@ module Hyrax
|
|
4
4
|
# generated models get registered as curation concerns and need a
|
5
5
|
# track_model_path to render Blacklight-related views
|
6
6
|
(['FileSet', 'Collection'] + Hyrax.config.registered_curation_concern_types).each do |concern|
|
7
|
-
|
7
|
+
model = concern.safe_constantize
|
8
|
+
model_name = model.respond_to?(:model_name) && model.model_name
|
9
|
+
next unless model_name
|
10
|
+
define_method("track_#{model_name.singular_route_key}_path") { |*args| main_app.track_solr_document_path(*args) }
|
8
11
|
end
|
9
12
|
end
|
10
13
|
end
|
@@ -14,6 +14,8 @@ module Hyrax
|
|
14
14
|
|
15
15
|
def to_solr # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
16
16
|
super.tap do |solr_doc| # rubocop:disable Metrics/BlockLength
|
17
|
+
solr_doc['generic_type_si'] = 'FileSet'
|
18
|
+
|
17
19
|
# Metadata from the FileSet
|
18
20
|
solr_doc['file_ids_ssim'] = resource.file_ids&.map(&:to_s)
|
19
21
|
solr_doc['original_file_id_ssi'] = resource.original_file_id.to_s
|
@@ -11,7 +11,7 @@ module Hyrax
|
|
11
11
|
|
12
12
|
def to_solr # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
|
13
13
|
super.tap do |solr_doc|
|
14
|
-
solr_doc['
|
14
|
+
solr_doc['generic_type_si'] = 'Work'
|
15
15
|
solr_doc['suppressed_bsi'] = suppressed?(resource)
|
16
16
|
solr_doc['admin_set_id_ssim'] = [resource.admin_set_id.to_s]
|
17
17
|
solr_doc['member_of_collection_ids_ssim'] = resource.member_of_collection_ids.map(&:to_s)
|
@@ -2,13 +2,29 @@
|
|
2
2
|
class IngestLocalFileJob < Hyrax::ApplicationJob
|
3
3
|
queue_as Hyrax.config.ingest_queue_name
|
4
4
|
|
5
|
-
# @param [FileSet] file_set
|
5
|
+
# @param [FileSet, Hyrax::FileSet] file_set
|
6
6
|
# @param [String] path
|
7
7
|
# @param [User] user
|
8
8
|
def perform(file_set, path, user)
|
9
|
+
case file_set
|
10
|
+
when ActiveFedora::Base
|
11
|
+
__perform(file_set, path, user, use_valkyrie: false)
|
12
|
+
else
|
13
|
+
__perform(file_set, path, user, use_valkyrie: true)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# @note Based on the present implementation (see SHA a8597884e) of
|
20
|
+
# the Hyrax::Actors::FileSetActor, we wouldn't need to pass the
|
21
|
+
# `use_valkyrie` parameter. However, I want to include this logic
|
22
|
+
# to demonstrate that "Yes, the IngestLocalFileJob has been tested
|
23
|
+
# for Valkyrie usage"
|
24
|
+
def __perform(file_set, path, user, use_valkyrie:)
|
9
25
|
file_set.label ||= File.basename(path)
|
10
26
|
|
11
|
-
actor = Hyrax::Actors::FileSetActor.new(file_set, user)
|
27
|
+
actor = Hyrax::Actors::FileSetActor.new(file_set, user, use_valkyrie: use_valkyrie)
|
12
28
|
|
13
29
|
if actor.create_content(File.open(path))
|
14
30
|
Hyrax.config.callback.run(:after_import_local_file_success, file_set, user, path, warn: false)
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
class CollectionBrandingInfo < ApplicationRecord
|
3
|
-
# i = ColectionImageInfo.new()
|
4
|
-
|
5
3
|
def initialize(collection_id:,
|
6
4
|
filename:,
|
7
5
|
role:,
|
@@ -13,20 +11,32 @@ class CollectionBrandingInfo < ApplicationRecord
|
|
13
11
|
self.role = role
|
14
12
|
self.alt_text = alt_txt
|
15
13
|
self.target_url = target_url
|
16
|
-
|
17
|
-
self.local_path = find_local_filename(collection_id, role, filename)
|
14
|
+
self.local_path = File.join(role, filename)
|
18
15
|
end
|
19
16
|
|
20
17
|
def save(file_location, copy_file = true)
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
filename = File.split(local_path).last
|
19
|
+
role_and_filename = File.join(role, filename)
|
20
|
+
|
21
|
+
storage.upload(resource: Hyrax::PcdmCollection.new(id: collection_id),
|
22
|
+
file: File.open(file_location),
|
23
|
+
original_filename: role_and_filename)
|
24
|
+
self.local_path = find_local_filename(collection_id, role, filename)
|
25
|
+
|
24
26
|
FileUtils.remove_file(file_location) if File.exist?(file_location) && copy_file
|
25
27
|
super()
|
26
28
|
end
|
27
29
|
|
28
|
-
def delete(location_path)
|
29
|
-
|
30
|
+
def delete(location_path = nil)
|
31
|
+
id = if location_path
|
32
|
+
Deprecation.warn('Passing an explict location path is ' \
|
33
|
+
'deprecated. Call without arguments instead.')
|
34
|
+
location_path
|
35
|
+
else
|
36
|
+
local_path
|
37
|
+
end
|
38
|
+
|
39
|
+
storage.delete(id: id)
|
30
40
|
end
|
31
41
|
|
32
42
|
def find_local_filename(collection_id, role, filename)
|
@@ -37,4 +47,10 @@ class CollectionBrandingInfo < ApplicationRecord
|
|
37
47
|
def find_local_dir_name(collection_id, role)
|
38
48
|
File.join(Hyrax.config.branding_path, collection_id.to_s, role.to_s)
|
39
49
|
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def storage
|
54
|
+
Hyrax.config.branding_storage_adapter
|
55
|
+
end
|
40
56
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Hyrax
|
3
|
+
module Embargoable
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
include Hydra::AccessControls::Embargoable
|
6
|
+
|
7
|
+
included do
|
8
|
+
validates :lease_expiration_date, 'hydra/future_date': true, on: :create
|
9
|
+
validates :embargo_release_date, 'hydra/future_date': true, on: :create
|
10
|
+
end
|
11
|
+
|
12
|
+
##
|
13
|
+
# Override aggressive Hydra::AccessControls validation
|
14
|
+
def enforce_future_date_for_embargo?
|
15
|
+
false
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# Override aggressive Hydra::AccessControls validation
|
20
|
+
def enforce_future_date_for_lease?
|
21
|
+
false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|