bulkrax 9.2.0 → 9.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb04fb1689c90c0cb7b96d0fbab95f371e4e4718509638812e62b0bffa1cc9e0
4
- data.tar.gz: b3df0b413a151f7c49c6a39e07a705ec0e8c87d181a66de2a0ae75d567297f08
3
+ metadata.gz: 462afc87884a3c6ed23d3d8b9237ec3dafeffcd2cda9b8e0836d74e0bcd68657
4
+ data.tar.gz: 4373f2ab775eb346a9b34b2bf7c2238b2b3c192a2c5d9a7e039974a56527ca74
5
5
  SHA512:
6
- metadata.gz: 89a766b0116729946c1ffba1252362fff3f29fd57ab774aebab39fa5b6f2b207a511de3da801b47bce7352a8ef2ca2e3811f306ca0f701ef592acd2a66103f34
7
- data.tar.gz: b559f0441c55c23a64568d95d1bcb533dc5b11cf12c9ad8aaed3ab852a0f9ea88b1e9140968b6272af54d05d2edae3ff3dadb5433e07fa6c55d90e615f42447d
6
+ metadata.gz: 887b076e34be355fe1708d97d1ab022106aa0c7e9eb8acf80233a3db0c648fb4642ab5be3cf8ddaf9fc270ebf61d0762630d803893de6d417a3baf6332405d86
7
+ data.tar.gz: bd12861189a4182da26dd3337dd4d89536616ec632a211ba4d8821c3d390d4b03093ed49a77a184359b95c7ae1667bcd4efc59a2fd907af370cadb861eb8f895
@@ -15,9 +15,11 @@ function prepBulkrax(event) {
15
15
  // Initialize the uploader only if hyraxUploader is defined
16
16
  if (typeof $.fn.hyraxUploader === 'function') {
17
17
  // Initialize the uploader
18
- $('.fileupload-bulkrax').hyraxUploader({
18
+ var uploader = $('.fileupload-bulkrax');
19
+ var maxFileSize = uploader.data('max-file-size');
20
+ uploader.hyraxUploader({
19
21
  maxNumberOfFiles: 1,
20
- maxFileSize: <%= (defined?(Hyrax) && Hyrax.config.uploader[:maxFileSize]) || 524288000 %>
22
+ maxFileSize: maxFileSize
21
23
  });
22
24
 
23
25
  // Function to toggle 'required' attribute based on uploaded files
@@ -236,7 +236,8 @@ module Bulkrax
236
236
  # @input [Fileset or FileMetadata]
237
237
  # @return [FileMetadata] the original file
238
238
  def self.original_file(fileset:)
239
- fileset.try(:original_file) || fileset
239
+ return fileset if fileset.is_a?(Hyrax::FileMetadata)
240
+ fileset.try(:original_file)
240
241
  end
241
242
 
242
243
  ##
@@ -293,6 +294,10 @@ module Bulkrax
293
294
  def delete(user)
294
295
  obj = find
295
296
  raise ObjectFactoryInterface::ObjectNotFoundError, "Object not found to delete" unless obj
297
+ # delete the file sets when we delete a work
298
+ # This has to be done before the work is deleted or we can't find them
299
+ # via the custom query
300
+ destroy_existing_files(object: obj)
296
301
 
297
302
  Hyrax.persister.delete(resource: obj)
298
303
  Hyrax.index_adapter.delete(resource: obj)
@@ -547,8 +552,9 @@ module Bulkrax
547
552
  end
548
553
 
549
554
  # @Override Destroy existing files with Hyrax::Transactions
550
- def destroy_existing_files
555
+ def destroy_existing_files(object: @object)
551
556
  existing_files = Hyrax.custom_queries.find_child_file_sets(resource: object)
557
+ return if existing_files.empty?
552
558
 
553
559
  existing_files.each do |fs|
554
560
  transactions["file_set.destroy"]
@@ -558,10 +564,10 @@ module Bulkrax
558
564
  .value!
559
565
  end
560
566
 
561
- @object.member_ids = @object.member_ids.reject { |m| existing_files.detect { |f| f.id == m } }
562
- @object.rendering_ids = []
563
- @object.representative_id = nil
564
- @object.thumbnail_id = nil
567
+ object.member_ids = object.member_ids.reject { |m| existing_files.detect { |f| f.id == m } }
568
+ object.rendering_ids = []
569
+ object.representative_id = nil
570
+ object.thumbnail_id = nil
565
571
  end
566
572
 
567
573
  def transform_attributes(update: false)
@@ -5,10 +5,13 @@ module Bulkrax
5
5
  queue_as :import
6
6
 
7
7
  def perform(entry, importer_run)
8
- status = self.class::DELETE_CLASS.perform_now(entry, importer_run)
9
- if status.status_message == "Deleted"
10
- entry = Bulkrax::Entry.find(entry.id) # maximum reload
11
- self.class::IMPORT_CLASS.perform_now(entry.id, importer_run.id)
8
+ # Delete the object if it exists, then reimport it.
9
+ # If the object doesn't exist, just reimport it.
10
+ begin
11
+ status = self.class::DELETE_CLASS.perform_now(entry, importer_run)
12
+ reimport(entry, importer_run) if status.status_message == "Deleted"
13
+ rescue Bulkrax::ObjectFactoryInterface::ObjectNotFoundError
14
+ reimport(entry, importer_run)
12
15
  end
13
16
 
14
17
  rescue => e
@@ -16,5 +19,10 @@ module Bulkrax
16
19
  # this causes caught exception to be reraised
17
20
  raise
18
21
  end
22
+
23
+ def reimport(entry, importer_run)
24
+ entry = Bulkrax::Entry.find(entry.id) # maximum reload
25
+ self.class::IMPORT_CLASS.perform_now(entry.id, importer_run.id)
26
+ end
19
27
  end
20
28
  end
@@ -3,7 +3,16 @@
3
3
  module Bulkrax
4
4
  class DeleteFileSetJob < DeleteJob
5
5
  def perform(entry, importer_run)
6
+ # Ensure the entry has metadata built for delete if it
7
+ # doesn't already so it can be found for deletion.
8
+ if entry.respond_to?(:build_metadata_for_delete) &&
9
+ entry.parsed_metadata.nil? &&
10
+ entry.raw_metadata.present?
11
+ entry.build_metadata_for_delete
12
+ entry.save!
13
+ end
6
14
  file_set = entry.factory.find
15
+
7
16
  if file_set
8
17
  parent = file_set.parent
9
18
  if parent&.respond_to?(:ordered_members)
@@ -27,10 +27,10 @@ module Bulkrax
27
27
  # Prepend the file_set id to ensure a unique filename and also one that is not longer than 255 characters
28
28
  def filename(file_set)
29
29
  # return if there are no files on the fileset
30
- return if Bulkrax.object_factory.original_file(fileset: file_set).blank?
30
+ file = Bulkrax.object_factory.original_file(fileset: file_set)
31
+ return '' if file.blank?
31
32
 
32
33
  fn = Bulkrax.object_factory.filename_for(fileset: file_set)
33
- file = Bulkrax.object_factory.original_file(fileset: file_set)
34
34
  ext = file_extension(file: file, filename: fn)
35
35
 
36
36
  # Prepend the file_set id to ensure a unique filename
@@ -1,4 +1,4 @@
1
- <div class="fileupload-bulkrax">
1
+ <div class="fileupload-bulkrax" data-max-file-size="<%= (defined?(Hyrax) && Hyrax.config.uploader[:maxFileSize]) || 524288000 %>">
2
2
  <noscript><input type="hidden" name="redirect" value="<%= main_app.root_path %>" /></noscript>
3
3
  <table role="presentation" class="table table-striped"><tbody class="files"></tbody></table>
4
4
  <div class="fileupload-buttonbar">
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bulkrax
4
- VERSION = '9.2.0'
4
+ VERSION = '9.2.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bulkrax
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.2.0
4
+ version: 9.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Kaufman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-09-10 00:00:00.000000000 Z
11
+ date: 2025-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails