hyrax 2.0.0.rc1 → 2.0.0.rc2

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.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/actors/hyrax/actors/create_with_remote_files_actor.rb +5 -1
  4. data/app/assets/stylesheets/hyrax/_header.scss +6 -0
  5. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +1 -1
  6. data/app/controllers/hyrax/admin/permission_template_accesses_controller.rb +4 -3
  7. data/app/controllers/hyrax/collections_controller.rb +2 -0
  8. data/app/forms/hyrax/forms/permission_template_form.rb +113 -48
  9. data/app/jobs/ingest_local_file_job.rb +0 -1
  10. data/app/renderers/hyrax/renderers/rights_statement_attribute_renderer.rb +25 -0
  11. data/app/search_builders/hyrax/deposit_search_builder.rb +6 -3
  12. data/app/search_builders/hyrax/stats/work_status_search_builder.rb +4 -5
  13. data/app/services/hyrax/default_middleware_stack.rb +0 -1
  14. data/app/services/hyrax/file_set_derivatives_service.rb +13 -4
  15. data/app/services/hyrax/statistics/depositors/summary.rb +1 -1
  16. data/app/services/hyrax/workflow/abstract_notification.rb +3 -2
  17. data/app/services/hyrax/workflow/notification_service.rb +3 -12
  18. data/app/services/hyrax/workflow/permission_query.rb +3 -3
  19. data/app/services/hyrax/workflow/status_list_service.rb +1 -1
  20. data/app/views/hyrax/admin/admin_sets/_form_participants.html.erb +1 -0
  21. data/app/views/hyrax/admin/admin_sets/_form_visibility.html.erb +1 -1
  22. data/app/views/hyrax/base/_attribute_rows.html.erb +1 -1
  23. data/app/views/hyrax/collections/show.html.erb +3 -0
  24. data/app/views/hyrax/dashboard/_index_partials/_proxy_rights.html.erb +1 -0
  25. data/app/views/hyrax/notifications/_notifications.html.erb +1 -0
  26. data/config/locales/hyrax.de.yml +7 -3
  27. data/config/locales/hyrax.en.yml +16 -12
  28. data/config/locales/hyrax.es.yml +4 -0
  29. data/config/locales/hyrax.fr.yml +4 -0
  30. data/config/locales/hyrax.it.yml +4 -0
  31. data/config/locales/hyrax.pt-BR.yml +4 -0
  32. data/config/locales/hyrax.zh.yml +4 -0
  33. data/hyrax.gemspec +2 -2
  34. data/lib/generators/hyrax/templates/config/locales/hyrax.de.yml +1 -1
  35. data/lib/generators/hyrax/templates/config/locales/hyrax.en.yml +1 -1
  36. data/lib/generators/hyrax/templates/config/locales/hyrax.es.yml +1 -1
  37. data/lib/generators/hyrax/templates/config/locales/hyrax.fr.yml +1 -1
  38. data/lib/generators/hyrax/templates/config/locales/hyrax.it.yml +1 -1
  39. data/lib/generators/hyrax/templates/config/locales/hyrax.pt-BR.yml +1 -1
  40. data/lib/generators/hyrax/templates/config/locales/hyrax.zh.yml +1 -1
  41. data/lib/hyrax/configuration.rb +11 -0
  42. data/lib/hyrax/version.rb +1 -1
  43. data/spec/abilities/file_set_abilities_spec.rb +3 -3
  44. data/spec/abilities/generic_work_abilities_spec.rb +5 -5
  45. data/spec/actors/hyrax/actors/generic_work_actor_spec.rb +12 -12
  46. data/spec/actors/hyrax/actors/transactional_request_spec.rb +1 -1
  47. data/spec/controllers/hyrax/api/items_controller_spec.rb +6 -6
  48. data/spec/controllers/hyrax/citations_controller_spec.rb +2 -2
  49. data/spec/controllers/hyrax/collections_controller_spec.rb +1 -0
  50. data/spec/controllers/hyrax/content_blocks_controller_spec.rb +5 -5
  51. data/spec/controllers/hyrax/dashboard/profiles_controller_spec.rb +2 -2
  52. data/spec/controllers/hyrax/downloads_controller_spec.rb +3 -3
  53. data/spec/controllers/hyrax/featured_work_lists_controller_spec.rb +2 -2
  54. data/spec/controllers/hyrax/generic_works_controller_spec.rb +1 -1
  55. data/spec/controllers/hyrax/homepage_controller_spec.rb +1 -1
  56. data/spec/controllers/hyrax/pages_controller_spec.rb +6 -6
  57. data/spec/controllers/hyrax/users_controller_spec.rb +1 -1
  58. data/spec/controllers/hyrax/workflow_actions_controller_spec.rb +1 -1
  59. data/spec/conversions/power_converters/polymorphic_type_spec.rb +1 -1
  60. data/spec/factories/admin_sets.rb +1 -1
  61. data/spec/factories/api_items.rb +1 -1
  62. data/spec/factories/collections_factory.rb +2 -2
  63. data/spec/factories/content_blocks.rb +1 -1
  64. data/spec/factories/featured_works.rb +1 -1
  65. data/spec/factories/file_sets.rb +3 -3
  66. data/spec/factories/generic_works.rb +15 -15
  67. data/spec/factories/operations.rb +1 -1
  68. data/spec/factories/permission_template_accesses.rb +1 -1
  69. data/spec/factories/permission_templates.rb +1 -1
  70. data/spec/factories/proxy_deposit_requests.rb +2 -2
  71. data/spec/factories/single_use_links.rb +1 -1
  72. data/spec/factories/sipity_entities.rb +1 -1
  73. data/spec/factories/uploaded_files.rb +1 -1
  74. data/spec/factories/users.rb +2 -2
  75. data/spec/factories/workflow_actions.rb +1 -1
  76. data/spec/factories/workflow_states.rb +1 -1
  77. data/spec/factories/workflows.rb +1 -1
  78. data/spec/features/notifications_spec.rb +1 -1
  79. data/spec/forms/hyrax/forms/permission_template_form_spec.rb +113 -2
  80. data/spec/helpers/hyrax/collections_helper_spec.rb +2 -2
  81. data/spec/helpers/hyrax/content_block_helper_spec.rb +1 -1
  82. data/spec/helpers/hyrax/trophy_helper_spec.rb +1 -1
  83. data/spec/jobs/create_derivatives_job_spec.rb +3 -4
  84. data/spec/jobs/ingest_local_file_job_spec.rb +2 -5
  85. data/spec/lib/hyrax/arkivo/actor_spec.rb +2 -2
  86. data/spec/lib/hyrax/arkivo/metadata_munger_spec.rb +1 -1
  87. data/spec/lib/hyrax/arkivo/schema_validator_spec.rb +1 -1
  88. data/spec/lib/hyrax/configuration_spec.rb +4 -0
  89. data/spec/models/file_set_spec.rb +1 -1
  90. data/spec/models/generic_work_spec.rb +1 -1
  91. data/spec/models/hyrax/user_usage_stats_spec.rb +1 -1
  92. data/spec/models/sipity/entity_spec.rb +1 -1
  93. data/spec/models/user_spec.rb +7 -7
  94. data/spec/presenters/hyrax/admin/users_presenter_spec.rb +2 -2
  95. data/spec/renderers/hyrax/renderers/rights_statement_attribute_renderer_spec.rb +20 -0
  96. data/spec/search_builders/hyrax/stats/work_status_search_builder_spec.rb +12 -12
  97. data/spec/services/hyrax/default_middleware_stack_spec.rb +0 -1
  98. data/spec/services/hyrax/embargo_service_spec.rb +4 -4
  99. data/spec/services/hyrax/workflow/notification_service_spec.rb +0 -35
  100. data/spec/services/hyrax/workflow/permission_generator_spec.rb +1 -1
  101. data/spec/services/hyrax/workflow/status_list_service_spec.rb +12 -0
  102. data/spec/spec_helper.rb +6 -6
  103. data/spec/support/features/session_helpers.rb +1 -1
  104. data/spec/views/hyrax/admin/users/index.html.erb_spec.rb +1 -1
  105. data/spec/views/hyrax/base/_attribute_rows.html.erb_spec.rb +1 -1
  106. data/spec/views/hyrax/base/file_manager.html.erb_spec.rb +1 -1
  107. data/spec/views/hyrax/collections/show.html.erb_spec.rb +23 -5
  108. data/spec/views/pages/show.html.erb_spec.rb +1 -1
  109. data/template.rb +1 -1
  110. metadata +8 -6
  111. data/app/actors/hyrax/actors/assign_representative_actor.rb +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6a96b72971c72adabf7c92ab360d35bb5d98eb63
4
- data.tar.gz: 3292d8aaf5784bcdd8e061f2446ad321e84a64f7
3
+ metadata.gz: 96df4577f120f0763bf3216037a0dc709b80c316
4
+ data.tar.gz: 953bbd05cdda6a6f180249e38d9803392552fdf2
5
5
  SHA512:
6
- metadata.gz: a12c44a6f0bb8b928a40666fbe8e0f3dbdc0d7c2a84410aff8e550c65916a2644910258160cca03ca806fc4b7f5c17d0fa963fa278dbb7ac49c06ee341f19abc
7
- data.tar.gz: bf7f7762658984fe13a62829dc706eeb32a070a13c57c8e8320988aa0f0e3a7fe289b12b647626e634871a2e3a7bfffb8427a4d49b3a0e894d7cac4ce5d40cde
6
+ metadata.gz: d82b1d0a1dbd9918594b5d1e68bef52bdbb2a1cba9ef0ccb73a7ce2dce642ce332b23dc8d3381e2a017838c91168ca49530eb9e5a6c1bb501c866617ef4dd661
7
+ data.tar.gz: 4518771b62f4def96f0cab00e4e562193c80cd1898fdcea4b2133a862b10ae2753320c06ae367d960d9c1c1c75757d03cd840e5602b80cf33ead75c491c9a359
data/README.md CHANGED
@@ -63,7 +63,7 @@ The Samvera community is here to help. Please see our [support guide](./.github/
63
63
  # Getting started
64
64
 
65
65
  This document contains instructions specific to setting up an app with __Hyrax
66
- v2.0.0.rc1__. If you are looking for instructions on installing a different
66
+ v2.0.0.rc2__. If you are looking for instructions on installing a different
67
67
  version, be sure to select the appropriate branch or tag from the drop-down
68
68
  menu above.
69
69
 
@@ -160,7 +160,7 @@ NOTE: The steps need to be done in order to create a new Hyrax based app.
160
160
  Generate a new Rails application using the template.
161
161
 
162
162
  ```
163
- rails _5.0.6_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/v2.0.0.rc1/template.rb
163
+ rails _5.0.6_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/v2.0.0.rc2/template.rb
164
164
  ```
165
165
 
166
166
  Generating a new Rails application using Hyrax's template above takes cares of a number of steps for you, including:
@@ -1,6 +1,10 @@
1
1
  module Hyrax
2
2
  module Actors
3
- # Attaches remote files to the work
3
+ # If there is a key `:remote_files' in the attributes, it attaches the files at the specified URIs
4
+ # to the work. e.g.:
5
+ # attributes[:remote_files] = filenames.map do |name|
6
+ # { url: "https://example.com/file/#{name}", file_name: name }
7
+ # end
4
8
  class CreateWithRemoteFilesActor < Hyrax::Actors::AbstractActor
5
9
  # @param [Hyrax::Actors::Environment] env
6
10
  # @return [Boolean] true if create was successful
@@ -20,3 +20,9 @@
20
20
  .nav > li > .notify-number {
21
21
  padding-right: 0;
22
22
  }
23
+
24
+ .dropdown-toggle:focus {
25
+ outline: 2px auto Highlight; // FireFox
26
+ outline: 5px auto -webkit-focus-ring-color; // Chrome, Safari
27
+ outline: -2px;
28
+ }
@@ -6,13 +6,13 @@ module Hyrax
6
6
 
7
7
  included do
8
8
  layout :decide_layout
9
-
10
9
  copy_blacklight_config_from(::CatalogController)
11
10
 
12
11
  class_attribute :_curation_concern_type, :show_presenter, :work_form_service, :search_builder_class
13
12
  self.show_presenter = Hyrax::WorkShowPresenter
14
13
  self.work_form_service = Hyrax::WorkFormService
15
14
  self.search_builder_class = WorkSearchBuilder
15
+ self.theme = 'hyrax/1_column'
16
16
  attr_accessor :curation_concern
17
17
  helper_method :curation_concern, :contextual_path
18
18
 
@@ -6,7 +6,7 @@ module Hyrax
6
6
  def destroy
7
7
  ActiveRecord::Base.transaction do
8
8
  @permission_template_access.destroy
9
- update_management if @permission_template_access.manage?
9
+ remove_access!
10
10
  end
11
11
 
12
12
  if @permission_template_access.destroyed?
@@ -28,8 +28,9 @@ module Hyrax
28
28
  @admin_set_id ||= @permission_template_access.permission_template.admin_set_id
29
29
  end
30
30
 
31
- def update_management
32
- Forms::PermissionTemplateForm.new(@permission_template_access.permission_template).update_management
31
+ def remove_access!
32
+ Forms::PermissionTemplateForm.new(@permission_template_access.permission_template)
33
+ .remove_access!(@permission_template_access)
33
34
  end
34
35
  end
35
36
  end
@@ -5,6 +5,8 @@ module Hyrax
5
5
  layout :decide_layout
6
6
  load_and_authorize_resource except: [:index, :show, :create], instance_name: :collection
7
7
 
8
+ self.theme = 'hyrax/1_column'
9
+
8
10
  # Renders a JSON response with a list of files in this collection
9
11
  # This is used by the edit form to populate the thumbnail_id dropdown
10
12
  def files
@@ -20,6 +20,9 @@ module Hyrax
20
20
  # Stores the selected
21
21
  attr_writer :workflow_id
22
22
 
23
+ # Adding attributes hash to state to avoid having to pass it around
24
+ attr_accessor :attributes
25
+
23
26
  def workflow_id
24
27
  @workflow_id || active_workflow.try(:id)
25
28
  end
@@ -41,54 +44,114 @@ module Hyrax
41
44
  # @return [Hash{Symbol => String, Boolean}] { :content_tab (for confirmation message),
42
45
  # :updated (true/false),
43
46
  # :error_code (for flash error lookup) }
47
+ # rubocop:disable Metrics/MethodLength
44
48
  def update(attributes)
45
- return_info = { content_tab: tab_to_update(attributes) }
49
+ @attributes = attributes
50
+ return_info = { content_tab: tab_to_update }
46
51
  error_code = nil
47
52
  case return_info[:content_tab]
48
53
  when "participants"
49
- update_participants_options(attributes)
54
+ update_participants_options
50
55
  when "visibility"
51
- error_code = update_visibility_options(attributes)
56
+ error_code = update_visibility_options
52
57
  when "workflow"
53
- grant_workflow_roles(attributes)
58
+ grant_workflow_roles
54
59
  end
55
60
  return_info[:error_code] = error_code if error_code
56
61
  return_info[:updated] = error_code ? false : true
57
62
  return_info
58
63
  end
64
+ # rubocop:enable Metrics/MethodLength
59
65
 
60
- # If management roles have been granted or removed, then copy this access
61
- # to the edit permissions of the AdminSet and to the WorkflowResponsibilities
62
- # of the active workflow
63
66
  def update_management
64
67
  admin_set.update_access_controls!
65
- update_workflow_approving_responsibilities
68
+ update_workflow_responsibilities
69
+ end
70
+
71
+ # This method is used to revoke access to an Admin Set and its workflows
72
+ #
73
+ # @return [Void]
74
+ def remove_access!(permission_template_access)
75
+ construct_attributes_from_template_access!(permission_template_access)
76
+ admin_set.update_access_controls!
77
+ update_workflow_responsibilities(remove_agent: true)
66
78
  end
67
79
 
68
80
  private
69
81
 
70
82
  # @return [String]
71
- def tab_to_update(attributes)
83
+ def tab_to_update
72
84
  return "participants" if attributes[:access_grants_attributes].present?
73
85
  return "workflow" if attributes[:workflow_id].present?
74
86
  return "visibility" if attributes.key?(:visibility)
75
87
  end
76
88
 
89
+ # This method is used to build the attributes that this class
90
+ # relies on using the passed-in PermissionTemplateAccess
91
+ # instance. This allows the class to use the same methods for
92
+ # granting access (when a new Admin Set manager is added, for
93
+ # instance), when called via #update, for revoking access as
94
+ # well when called via #remove_access!
95
+ #
77
96
  # @return [Void]
78
- def update_participants_options(attributes)
79
- update_permission_template(attributes)
80
- # if managers were added, recalculate update the access controls on the AdminSet
81
- return unless managers_updated?(attributes)
82
- update_management
97
+ def construct_attributes_from_template_access!(permission_template_access)
98
+ @attributes = {
99
+ access_grants_attributes: {
100
+ "0" => {
101
+ access: permission_template_access.access,
102
+ agent_type: permission_template_access.agent_type,
103
+ agent_id: permission_template_access.agent_id
104
+ }
105
+ }
106
+ }
107
+ end
108
+
109
+ # @return [Void]
110
+ def update_participants_options
111
+ update_permission_template
112
+ update_workflow_responsibilities
113
+ # if managers were added or removed, recalculate update the access controls on the AdminSet
114
+ admin_set.update_access_controls! if managers_updated?
115
+ end
116
+
117
+ # Grant appropriate workflow roles based on access specified
118
+ def update_workflow_responsibilities(remove_agent: false)
119
+ return unless available_workflows
120
+ roles = roles_for_agent
121
+ return if roles.none?
122
+ agents = remove_agent ? manager_agents - agents_from_attributes : manager_agents + agents_from_attributes
123
+ available_workflows.each do |workflow|
124
+ roles.each do |role|
125
+ workflow.update_responsibilities(role: role, agents: agents)
126
+ end
127
+ end
128
+ end
129
+
130
+ def roles_for_agent
131
+ roles = []
132
+ grants_as_collection.each do |grant|
133
+ case grant[:access]
134
+ when Hyrax::PermissionTemplateAccess::DEPOSIT
135
+ roles << Sipity::Role.find_by(name: Hyrax::RoleRegistry::DEPOSITING)
136
+ when Hyrax::PermissionTemplateAccess::MANAGE
137
+ roles += Sipity::Role.where(name: Hyrax::RoleRegistry.new.role_names)
138
+ # TODO: Figure out what to do here
139
+ # when Hyrax::PermissionTemplateAccess::VIEW
140
+ end
141
+ end
142
+ roles.uniq
83
143
  end
84
144
 
85
- # Grant workflow approve roles for any admin set managers
86
- # and revoke the approving role for non-managers
87
- def update_workflow_approving_responsibilities
88
- return unless active_workflow
89
- approving_role = Sipity::Role.find_by_name('approving')
90
- return unless approving_role
91
- active_workflow.update_responsibilities(role: approving_role, agents: manager_agents)
145
+ # @return [Array<Sipity::Agent>] a list sipity agents extracted from attrs
146
+ def agents_from_attributes
147
+ grants_as_collection.map do |grant|
148
+ agent = if grant[:agent_type] == 'user'
149
+ ::User.find_by_user_key(grant[:agent_id])
150
+ else
151
+ Hyrax::Group.new(grant[:agent_id])
152
+ end
153
+ PowerConverter.convert_to_sipity_agent(agent)
154
+ end
92
155
  end
93
156
 
94
157
  # @return [Array<Sipity::Agent>] a list of sipity agents corresponding to the manager role of the permission_template
@@ -107,17 +170,17 @@ module Hyrax
107
170
 
108
171
  # @return [Array<PermissionTemplateAccess>] a list of grants corresponding to the manager role of the permission_template
109
172
  def manager_grants
110
- model.access_grants.where(access: 'manage'.freeze)
173
+ model.access_grants.where(access: Hyrax::PermissionTemplateAccess::MANAGE)
111
174
  end
112
175
 
113
176
  # @return [String, Nil] error_code if validation fails, nil otherwise
114
- def update_visibility_options(attributes)
115
- error_code = validate_visibility_combinations(attributes)
177
+ def update_visibility_options
178
+ error_code = validate_visibility_combinations
116
179
  return error_code if error_code
117
- update_permission_template(attributes)
180
+ update_permission_template
118
181
  end
119
182
 
120
- def activate_workflow_from(attributes)
183
+ def activate_workflow_from_attributes
121
184
  new_active_workflow_id = attributes[:workflow_id] || attributes['workflow_id']
122
185
  if active_workflow
123
186
  return active_workflow if new_active_workflow_id.to_s == active_workflow.id.to_s
@@ -131,28 +194,29 @@ module Hyrax
131
194
  # have all the roles for the new workflow
132
195
  # @return [Void]
133
196
  # @todo Instead of granting the manage users all of the roles (which means lots of emails), can we agree on a Managing role that all workflows should have?
134
- def grant_workflow_roles(attributes)
135
- new_active_workflow = activate_workflow_from(attributes)
197
+ def grant_workflow_roles
198
+ new_active_workflow = activate_workflow_from_attributes
136
199
  return unless new_active_workflow
137
200
  manager_agents.each do |agent|
138
- active_workflow.workflow_roles.each do |role|
139
- Sipity::WorkflowResponsibility.find_or_create_by!(workflow_role: role, agent: agent)
201
+ active_workflow.workflow_roles.each do |workflow_role|
202
+ new_workflow_role = Sipity::WorkflowRole.find_or_create_by!(workflow: new_active_workflow, role: workflow_role.role)
203
+ Sipity::WorkflowResponsibility.find_or_create_by!(workflow_role: new_workflow_role, agent: agent)
140
204
  end
141
205
  end
142
206
  end
143
207
 
144
208
  # @return [Nil]
145
- def update_permission_template(attributes)
146
- model.update(permission_template_update_params(attributes))
209
+ def update_permission_template
210
+ model.update(permission_template_update_params)
147
211
  nil
148
212
  end
149
213
 
150
- def managers_updated?(attributes)
151
- grants_as_collection(attributes).any? { |x| x[:access] == 'manage' }
214
+ def managers_updated?
215
+ grants_as_collection.any? { |x| x[:access] == Hyrax::PermissionTemplateAccess::MANAGE }
152
216
  end
153
217
 
154
218
  # This allows the attributes
155
- def grants_as_collection(attributes)
219
+ def grants_as_collection
156
220
  return [] unless attributes[:access_grants_attributes]
157
221
  attributes_collection = attributes[:access_grants_attributes]
158
222
  if attributes_collection.respond_to?(:permitted?)
@@ -188,36 +252,36 @@ module Hyrax
188
252
  # @return [Hash] attributes used to update the model
189
253
  # rubocop:disable Metrics/CyclomaticComplexity
190
254
  # rubocop:disable Metrics/PerceivedComplexity
191
- def permission_template_update_params(raw_attributes)
192
- attributes = raw_attributes.except(:release_varies, :release_embargo)
255
+ def permission_template_update_params
256
+ filtered_attributes = attributes.except(:release_varies, :release_embargo)
193
257
  # If 'varies' before date option selected, then set release_period='before' and save release_date as-is
194
- if raw_attributes[:release_varies] == Hyrax::PermissionTemplate::RELEASE_TEXT_VALUE_BEFORE_DATE
195
- attributes[:release_period] = Hyrax::PermissionTemplate::RELEASE_TEXT_VALUE_BEFORE_DATE
258
+ if attributes[:release_varies] == Hyrax::PermissionTemplate::RELEASE_TEXT_VALUE_BEFORE_DATE
259
+ filtered_attributes[:release_period] = Hyrax::PermissionTemplate::RELEASE_TEXT_VALUE_BEFORE_DATE
196
260
  # Else if 'varies' + embargo selected, save embargo as the release_period
197
- elsif raw_attributes[:release_varies] == Hyrax::PermissionTemplate::RELEASE_TEXT_VALUE_EMBARGO &&
198
- raw_attributes[:release_embargo]
199
- attributes[:release_period] = raw_attributes[:release_embargo]
261
+ elsif attributes[:release_varies] == Hyrax::PermissionTemplate::RELEASE_TEXT_VALUE_EMBARGO &&
262
+ attributes[:release_embargo]
263
+ filtered_attributes[:release_period] = attributes[:release_embargo]
200
264
  # In an embargo, the release_date should be unspecified as it is based on deposit date
201
- attributes[:release_date] = nil
265
+ filtered_attributes[:release_date] = nil
202
266
  end
203
267
 
204
- if attributes[:release_period] == Hyrax::PermissionTemplate::RELEASE_TEXT_VALUE_NO_DELAY || (attributes[:release_period].blank? && raw_attributes[:release_varies].blank?)
268
+ if filtered_attributes[:release_period] == Hyrax::PermissionTemplate::RELEASE_TEXT_VALUE_NO_DELAY || (filtered_attributes[:release_period].blank? && attributes[:release_varies].blank?)
205
269
  # If release is "no delay" or is "varies" and "allow depositor to decide",
206
270
  # then a release_date should never be allowed/specified
207
- attributes[:release_date] = nil
271
+ filtered_attributes[:release_date] = nil
208
272
  end
209
273
 
210
- attributes
274
+ filtered_attributes
211
275
  end
212
276
  # rubocop:enable Metrics/CyclomaticComplexity
213
277
  # rubocop:enable Metrics/PerceivedComplexity
214
278
 
215
279
  # validate the hash of attributes used to update the visibility tab of the model
216
- # @param [Hash] attributes
217
280
  # @return [String, Nil] the error code if invalid, nil if valid
218
281
  # rubocop:disable Metrics/CyclomaticComplexity
219
282
  # rubocop:disable Metrics/PerceivedComplexity
220
- def validate_visibility_combinations(attributes)
283
+ # rubocop:disable Metrics/AbcSize
284
+ def validate_visibility_combinations
221
285
  return unless attributes.key?(:visibility) # only the visibility tab has validations
222
286
 
223
287
  # if "save" without any selections - none of the attributes are present
@@ -234,6 +298,7 @@ module Hyrax
234
298
  end
235
299
  # rubocop:enable Metrics/CyclomaticComplexity
236
300
  # rubocop:enable Metrics/PerceivedComplexity
301
+ # rubocop:enable Metrics/AbcSize
237
302
  end
238
303
  end
239
304
  end
@@ -10,7 +10,6 @@ class IngestLocalFileJob < Hyrax::ApplicationJob
10
10
  actor = Hyrax::Actors::FileSetActor.new(file_set, user)
11
11
 
12
12
  if actor.create_content(File.open(path))
13
- FileUtils.rm(path)
14
13
  Hyrax.config.callback.run(:after_import_local_file_success, file_set, user, path)
15
14
  else
16
15
  Hyrax.config.callback.run(:after_import_local_file_failure, file_set, user, path)
@@ -0,0 +1,25 @@
1
+ module Hyrax
2
+ module Renderers
3
+ # This is used by PresentsAttributes to show licenses
4
+ # e.g.: presenter.attribute_to_html(:rights_statement, render_as: :rights_statement)
5
+ class RightsStatementAttributeRenderer < AttributeRenderer
6
+ private
7
+
8
+ ##
9
+ # Special treatment for license/rights. A URL from the Hyrax gem's config/hyrax.rb is stored in the descMetadata of the
10
+ # curation_concern. If that URL is valid in form, then it is used as a link. If it is not valid, it is used as plain text.
11
+ def attribute_value_to_html(value)
12
+ begin
13
+ parsed_uri = URI.parse(value)
14
+ rescue
15
+ nil
16
+ end
17
+ if parsed_uri.nil?
18
+ ERB::Util.h(value)
19
+ else
20
+ %(<a href=#{ERB::Util.h(value)} target="_blank">#{Hyrax.config.rights_statement_service_class.new.label(value)}</a>)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -12,9 +12,6 @@ module Hyrax
12
12
  # the number of users in the database
13
13
  solr_parameters[:"facet.limit"] = ::User.count
14
14
 
15
- # only get work information
16
- solr_parameters[:fq] = Hyrax::WorkRelation.new.search_model_clause
17
-
18
15
  # we only want the facte counts not the actual data
19
16
  solr_parameters[:rows] = 0
20
17
  end
@@ -22,5 +19,11 @@ module Hyrax
22
19
  def self.depositor_field
23
20
  @depositor_field ||= Solrizer.solr_name('depositor', :symbol).freeze
24
21
  end
22
+
23
+ private
24
+
25
+ def only_works?
26
+ true
27
+ end
25
28
  end
26
29
  end
@@ -1,7 +1,8 @@
1
1
  module Hyrax
2
2
  module Stats
3
3
  class WorkStatusSearchBuilder < ::SearchBuilder
4
- self.default_processor_chain = [:include_suppressed_facet]
4
+ self.default_processor_chain = [:include_suppressed_facet, :filter_models]
5
+
5
6
  # includes the suppressed facet to get information on deposits.
6
7
  # use caution when combining this with other searches as it sets the rows to
7
8
  # zero to just get the facet information
@@ -9,8 +10,6 @@ module Hyrax
9
10
  def include_suppressed_facet(solr_parameters)
10
11
  solr_parameters[:"facet.field"].concat([IndexesWorkflow.suppressed_field])
11
12
  solr_parameters[:'facet.missing'] = true
12
- # only get work information
13
- solr_parameters[:fq] = work_relation.search_model_clause
14
13
 
15
14
  # we only want the facet counts not the actual data
16
15
  solr_parameters[:rows] = 0
@@ -18,8 +17,8 @@ module Hyrax
18
17
 
19
18
  private
20
19
 
21
- def work_relation
22
- Hyrax::WorkRelation.new
20
+ def only_works?
21
+ true
23
22
  end
24
23
  end
25
24
  end