bulkrax 3.1.2 → 3.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1738f148a6fe4a7a4bc3b97a39e08169f04540c9814dc1ba6c4c14350591440
4
- data.tar.gz: 995db6ebd622ccef4fe95c73e240b85bd3e303f9a00fe164c95f602b96c694b2
3
+ metadata.gz: 49b7cfb404f1878429bbac77aad6d1167e97377fe28b54e2042cee7f6ca04e67
4
+ data.tar.gz: c3789c193dc1610c99117e5e2c450ed477a7390995916c4b6b419900f5cf539b
5
5
  SHA512:
6
- metadata.gz: e5d7c2dfc70ddd26c80c51e580a2fb9b067cd3752df172066d68e26d0a6c5e7aa593a3779d9dad99e7d344fb632a723a13e8c663a2cf944e3bd491d3071bcc21
7
- data.tar.gz: 5408270ea11b4d1d185daaf266d9de8a16a11b27777e45c9443ab6de9fb02600c1899ac08fd57267c909fe1584fb7a32fbf9b628086157ce39bbbcf2824fe646
6
+ metadata.gz: a669e9b566770ad21e3a6242d24779f5c73847b2b97d4f7334f06209ac7de3634e7667550ba35ce6930f9ceaffda8efccb29cf3277b40f29d808ddbd9623a1b8
7
+ data.tar.gz: 794e6de65d4ebb5665ab73fdac3eba2d4157ff1b07f3da6cc63a6323b2127dc40021d69ea193da2a356e276f08dde8ccc51dc1d8c563e5ba3e8ecb592e4b4c88
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bulkrax
4
+ class DeleteCollectionJob < DeleteJob; end
5
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bulkrax
4
+ class DeleteFileSetJob < DeleteJob; end
5
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bulkrax
4
+ class DeleteJob < ApplicationJob
5
+ queue_as :import
6
+
7
+ # rubocop:disable Rails/SkipsModelValidations
8
+ def perform(entry, importer_run)
9
+ obj = entry.factory.find
10
+ obj&.delete
11
+ ImporterRun.find(importer_run.id).increment!(:deleted_records)
12
+ ImporterRun.find(importer_run.id).decrement!(:enqueued_records)
13
+ entry.save!
14
+ entry.importer.current_run = ImporterRun.find(importer_run.id)
15
+ entry.importer.record_status
16
+ entry.status_info("Deleted", ImporterRun.find(importer_run.id))
17
+ end
18
+ # rubocop:enable Rails/SkipsModelValidations
19
+ end
20
+ end
@@ -1,20 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bulkrax
4
- class DeleteWorkJob < ApplicationJob
5
- queue_as :import
6
-
7
- # rubocop:disable Rails/SkipsModelValidations
8
- def perform(entry, importer_run)
9
- work = entry.factory.find
10
- work&.delete
11
- ImporterRun.find(importer_run.id).increment!(:deleted_records)
12
- ImporterRun.find(importer_run.id).decrement!(:enqueued_records)
13
- entry.save!
14
- entry.importer.current_run = ImporterRun.find(importer_run.id)
15
- entry.importer.record_status
16
- entry.status_info("Deleted", ImporterRun.find(importer_run.id))
17
- end
18
- # rubocop:enable Rails/SkipsModelValidations
19
- end
4
+ class DeleteWorkJob < DeleteJob; end
20
5
  end
@@ -93,17 +93,31 @@ module Bulkrax
93
93
  end
94
94
 
95
95
  def build_export_metadata
96
- # make_round_trippable
97
96
  self.parsed_metadata = {}
98
- self.parsed_metadata['id'] = hyrax_record.id
99
- self.parsed_metadata[source_identifier] = hyrax_record.send(work_identifier)
100
- self.parsed_metadata['model'] = hyrax_record.has_model.first
97
+
98
+ build_system_metadata
99
+ build_files_metadata unless hyrax_record.is_a?(Collection)
101
100
  build_relationship_metadata
102
101
  build_mapping_metadata
103
- build_files unless hyrax_record.is_a?(Collection)
102
+
104
103
  self.parsed_metadata
105
104
  end
106
105
 
106
+ # Metadata required by Bulkrax for round-tripping
107
+ def build_system_metadata
108
+ self.parsed_metadata['id'] = hyrax_record.id
109
+ self.parsed_metadata[source_identifier] = hyrax_record.send(work_identifier)
110
+ self.parsed_metadata[key_for_export('model')] = hyrax_record.has_model.first
111
+ end
112
+
113
+ def build_files_metadata
114
+ file_mapping = key_for_export('file')
115
+ file_sets = hyrax_record.file_set? ? Array.wrap(hyrax_record) : hyrax_record.file_sets
116
+ filenames = file_sets.map { |fs| filename(fs).to_s if filename(fs).present? }.compact
117
+
118
+ handle_join_on_export(file_mapping, filenames, mapping['file']&.[]('join')&.present?)
119
+ end
120
+
107
121
  def build_relationship_metadata
108
122
  # Includes all relationship methods for all exportable record types (works, Collections, FileSets)
109
123
  relationship_methods = {
@@ -127,12 +141,10 @@ module Bulkrax
127
141
 
128
142
  def build_mapping_metadata
129
143
  mapping.each do |key, value|
130
- next if Bulkrax.reserved_properties.include?(key) && !field_supported?(key)
131
- next if key == "model"
132
- # relationships handled by #build_relationship_metadata
133
- next if [related_parents_parsed_mapping, related_children_parsed_mapping].include?(key)
134
- next if key == 'file' # handled by #build_files
144
+ # these keys are handled by other methods
145
+ next if ['model', 'file', related_parents_parsed_mapping, related_children_parsed_mapping].include?(key)
135
146
  next if value['excluded']
147
+ next if Bulkrax.reserved_properties.include?(key) && !field_supported?(key)
136
148
 
137
149
  object_key = key if value.key?('object')
138
150
  next unless hyrax_record.respond_to?(key.to_s) || object_key.present?
@@ -205,14 +217,6 @@ module Bulkrax
205
217
  end
206
218
  end
207
219
 
208
- def build_files
209
- file_mapping = mapping['file']&.[]('from')&.first || 'file'
210
- file_sets = hyrax_record.file_set? ? Array.wrap(hyrax_record) : hyrax_record.file_sets
211
-
212
- filenames = file_sets.map { |fs| filename(fs).to_s if filename(fs).present? }.compact
213
- handle_join_on_export(file_mapping, filenames, mapping['file']&.[]('join')&.present?)
214
- end
215
-
216
220
  def handle_join_on_export(key, values, join)
217
221
  if join
218
222
  parsed_metadata[key] = values.join(' | ') # TODO: make split char dynamic
@@ -224,16 +228,6 @@ module Bulkrax
224
228
  end
225
229
  end
226
230
 
227
- # In order for the existing exported hyrax_record, to be updated by a re-import
228
- # we need a unique value in system_identifier
229
- # add the existing hyrax_record id to system_identifier
230
- def make_round_trippable
231
- values = hyrax_record.send(work_identifier.to_s).to_a
232
- values << hyrax_record.id
233
- hyrax_record.send("#{work_identifier}=", values)
234
- hyrax_record.save
235
- end
236
-
237
231
  def record
238
232
  @record ||= raw_metadata
239
233
  end
@@ -263,7 +257,8 @@ module Bulkrax
263
257
  end
264
258
 
265
259
  def collections_created?
266
- collection_identifiers.length == self.collection_ids.length
260
+ # TODO: look into if this method is still needed after new relationships code
261
+ true
267
262
  end
268
263
 
269
264
  def find_collection_ids
@@ -57,7 +57,7 @@ module Bulkrax
57
57
  end
58
58
  # Remove extention truncate and reattach
59
59
  ext = File.extname(filename)
60
- "#{File.basename(filename, ext)[0...(255 - ext.length)]}#{ext}"
60
+ "#{File.basename(filename, ext)[0...(220 - ext.length)]}#{ext}"
61
61
  end
62
62
  end
63
63
  end
@@ -11,12 +11,15 @@ module Bulkrax
11
11
  end
12
12
 
13
13
  def records(_opts = {})
14
+ return @records if @records.present?
15
+
14
16
  file_for_import = only_updates ? parser_fields['partial_import_file_path'] : import_file_path
15
17
  # data for entry does not need source_identifier for csv, because csvs are read sequentially and mapped after raw data is read.
16
18
  csv_data = entry_class.read_data(file_for_import)
17
19
  importer.parser_fields['total'] = csv_data.count
18
20
  importer.save
19
- @records ||= csv_data.map { |record_data| entry_class.data_for_entry(record_data, nil, self) }
21
+
22
+ @records = csv_data.map { |record_data| entry_class.data_for_entry(record_data, nil, self) }
20
23
  end
21
24
 
22
25
  def build_records
@@ -145,7 +148,6 @@ module Bulkrax
145
148
  'Bulkrax::Importer',
146
149
  current_record.to_h)
147
150
  if current_record[:delete].present?
148
- # TODO: create a "Delete" job for file_sets and collections
149
151
  "Bulkrax::Delete#{type.camelize}Job".constantize.send(perform_method, new_entry, current_run)
150
152
  else
151
153
  "Bulkrax::Import#{type.camelize}Job".constantize.send(perform_method, new_entry.id, current_run.id)
@@ -178,7 +178,7 @@
178
178
  <% elsif e.status == "Pending" %>
179
179
  <td><span class="glyphicon glyphicon-option-horizontal" style="color: blue;"></span> <%= e.status %></td>
180
180
  <% else %>
181
- <td><span class="glyphicon glyphicon-remove" style="color: red;"></span> <%= e.status %></td>
181
+ <td><span class="glyphicon glyphicon-remove" style="color: <%= e.status == 'Deleted' ? 'green' : 'red' %>;"></span> <%= e.status %></td>
182
182
  <% end %>
183
183
  <% if e.last_error.present? %>
184
184
  <td><%= link_to e.last_error.dig("error_class"), bulkrax.importer_entry_path(@importer.id, e.id) %></td>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bulkrax
4
- VERSION = '3.1.2'
4
+ VERSION = '3.2.0'
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: 3.1.2
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Kaufman
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-24 00:00:00.000000000 Z
11
+ date: 2022-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -260,6 +260,9 @@ files:
260
260
  - app/helpers/bulkrax/validation_helper.rb
261
261
  - app/jobs/bulkrax/application_job.rb
262
262
  - app/jobs/bulkrax/create_relationships_job.rb
263
+ - app/jobs/bulkrax/delete_collection_job.rb
264
+ - app/jobs/bulkrax/delete_file_set_job.rb
265
+ - app/jobs/bulkrax/delete_job.rb
263
266
  - app/jobs/bulkrax/delete_work_job.rb
264
267
  - app/jobs/bulkrax/download_cloud_file_job.rb
265
268
  - app/jobs/bulkrax/export_work_job.rb
@@ -384,7 +387,7 @@ homepage: https://github.com/samvera-labs/bulkrax
384
387
  licenses:
385
388
  - Apache-2.0
386
389
  metadata: {}
387
- post_install_message:
390
+ post_install_message:
388
391
  rdoc_options: []
389
392
  require_paths:
390
393
  - lib
@@ -399,8 +402,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
399
402
  - !ruby/object:Gem::Version
400
403
  version: '0'
401
404
  requirements: []
402
- rubygems_version: 3.0.3
403
- signing_key:
405
+ rubygems_version: 3.1.4
406
+ signing_key:
404
407
  specification_version: 4
405
408
  summary: Import and export tool for Hyrax and Hyku
406
409
  test_files: []