bulkrax 2.1.1 → 2.2.3
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 +4 -4
- data/app/assets/javascripts/bulkrax/importers.js.erb +1 -1
- data/app/models/bulkrax/csv_file_set_entry.rb +1 -1
- data/app/models/concerns/bulkrax/download_behavior.rb +1 -1
- data/app/models/concerns/bulkrax/importer_exporter_behavior.rb +6 -5
- data/app/parsers/bulkrax/csv_parser.rb +51 -17
- data/app/views/bulkrax/exporters/index.html.erb +4 -0
- data/app/views/bulkrax/importers/index.html.erb +4 -0
- data/lib/bulkrax/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f9006f783a5184f832fe78344acc3e7acca920c75a9a92ed2c604246102f6e8
|
4
|
+
data.tar.gz: c834fa1558b8dba4e0fd1024e552ddfc0eb5dfdad307aa13283da41abc2ca609
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c4a559ee030dc0b259b808cdc7067ad89ffcfe8d17f2483190e3503104edbd8daec737a8727a171eaca8a5bf218deb20c5c462eed5855ee1adaa9d60002ef26
|
7
|
+
data.tar.gz: 2882c50b2eee13f6df2e4b395c246e4909c3529cd7ead177fb5ec85effa1b32470c6da1e87d569b2efe22891a88e43b85855ae0a1bd30c204c1846daa33e41d4
|
@@ -49,7 +49,7 @@ function prepBulkrax(event) {
|
|
49
49
|
for(var mutation of mutationsList) {
|
50
50
|
if (mutation.type == 'childList') {
|
51
51
|
browseButton = document.getElementById('browse');
|
52
|
-
var exp = /selected_files\[[0-9
|
52
|
+
var exp = /selected_files\[[0-9]*\]\[url\]/
|
53
53
|
for (var node of mutation.addedNodes) {
|
54
54
|
if (node.attributes != undefined) {
|
55
55
|
var name = node.attributes.name.value
|
@@ -12,7 +12,7 @@ module Bulkrax
|
|
12
12
|
|
13
13
|
parsed_metadata['file'][i] = path_to_file
|
14
14
|
end
|
15
|
-
raise ::StandardError,
|
15
|
+
raise ::StandardError, "one or more file paths are invalid: #{parsed_metadata['file'].join(', ')}" unless parsed_metadata['file'].map { |file_path| ::File.file?(file_path) }.all?
|
16
16
|
|
17
17
|
parsed_metadata['file']
|
18
18
|
end
|
@@ -30,7 +30,7 @@ module Bulkrax
|
|
30
30
|
|
31
31
|
# Create some headers for the datastream
|
32
32
|
def content_options
|
33
|
-
{ disposition: '
|
33
|
+
{ disposition: 'attachment', type: download_content_type, filename: file_name }
|
34
34
|
end
|
35
35
|
|
36
36
|
# render an HTTP HEAD response
|
@@ -22,16 +22,17 @@ module Bulkrax
|
|
22
22
|
|
23
23
|
def increment_counters(index, collection: false, file_set: false)
|
24
24
|
# Only set the totals if they were not set on initialization
|
25
|
+
importer_run = ImporterRun.find(current_run.id) # make sure fresh
|
25
26
|
if collection
|
26
|
-
|
27
|
+
importer_run.total_collection_entries = index + 1 unless parser.collections_total.positive?
|
27
28
|
elsif file_set
|
28
|
-
|
29
|
+
importer_run.total_file_set_entries = index + 1 unless parser.file_sets_total.positive?
|
29
30
|
else
|
30
31
|
# TODO: differentiate between work and collection counts for exporters
|
31
|
-
|
32
|
+
importer_run.total_work_entries = index + 1 unless limit.to_i.positive? || parser.total.positive?
|
32
33
|
end
|
33
|
-
|
34
|
-
|
34
|
+
importer_run.enqueued_records += 1
|
35
|
+
importer_run.save!
|
35
36
|
end
|
36
37
|
|
37
38
|
def keys_without_numbers(keys)
|
@@ -110,9 +110,9 @@ module Bulkrax
|
|
110
110
|
## END
|
111
111
|
|
112
112
|
new_entry = find_or_create_entry(collection_entry_class, collection_hash[source_identifier], 'Bulkrax::Importer', collection_hash)
|
113
|
+
increment_counters(index, collection: true)
|
113
114
|
# TODO: add support for :delete option
|
114
115
|
ImportCollectionJob.perform_now(new_entry.id, current_run.id)
|
115
|
-
increment_counters(index, collection: true)
|
116
116
|
end
|
117
117
|
importer.record_status
|
118
118
|
rescue StandardError => e
|
@@ -177,40 +177,74 @@ module Bulkrax
|
|
177
177
|
end
|
178
178
|
|
179
179
|
def current_work_ids
|
180
|
+
ActiveSupport::Deprication.warn('Bulkrax::CsvParser#current_work_ids will be replaced with #current_record_ids in version 3.0')
|
181
|
+
current_record_ids
|
182
|
+
end
|
183
|
+
|
184
|
+
def current_record_ids
|
185
|
+
@work_ids = []
|
186
|
+
@collection_ids = []
|
187
|
+
@file_set_ids = []
|
188
|
+
|
180
189
|
case importerexporter.export_from
|
181
190
|
when 'all'
|
182
|
-
ActiveFedora::SolrService.query("has_model_ssim:(#{Hyrax.config.curation_concerns.join(' OR ')}) #{extra_filters}", rows: 2_147_483_647).map(&:id)
|
191
|
+
@work_ids = ActiveFedora::SolrService.query("has_model_ssim:(#{Hyrax.config.curation_concerns.join(' OR ')}) #{extra_filters}", rows: 2_147_483_647).map(&:id)
|
192
|
+
@collection_ids = ActiveFedora::SolrService.query("has_model_ssim:Collection #{extra_filters}", rows: 2_147_483_647).map(&:id)
|
193
|
+
@file_set_ids = ActiveFedora::SolrService.query("has_model_ssim:FileSet #{extra_filters}", rows: 2_147_483_647).map(&:id)
|
183
194
|
when 'collection'
|
184
|
-
ActiveFedora::SolrService.query("member_of_collection_ids_ssim:#{importerexporter.export_source + extra_filters}", rows: 2_000_000_000).map(&:id)
|
195
|
+
@work_ids = ActiveFedora::SolrService.query("member_of_collection_ids_ssim:#{importerexporter.export_source + extra_filters}", rows: 2_000_000_000).map(&:id)
|
185
196
|
when 'worktype'
|
186
|
-
ActiveFedora::SolrService.query("has_model_ssim:#{importerexporter.export_source + extra_filters}", rows: 2_000_000_000).map(&:id)
|
197
|
+
@work_ids = ActiveFedora::SolrService.query("has_model_ssim:#{importerexporter.export_source + extra_filters}", rows: 2_000_000_000).map(&:id)
|
187
198
|
when 'importer'
|
188
|
-
|
189
|
-
|
190
|
-
.includes(:statusable)
|
191
|
-
.where('bulkrax_statuses.statusable_id IN (?) AND bulkrax_statuses.statusable_type = ? AND status_message = ?', entry_ids, 'Bulkrax::Entry', 'Complete')
|
199
|
+
set_ids_for_exporting_from_importer
|
200
|
+
end
|
192
201
|
|
193
|
-
|
194
|
-
|
202
|
+
@work_ids + @collection_ids + @file_set_ids
|
203
|
+
end
|
204
|
+
|
205
|
+
# Set the following instance variables: @work_ids, @collection_ids, @file_set_ids
|
206
|
+
# @see #current_record_ids
|
207
|
+
def set_ids_for_exporting_from_importer
|
208
|
+
entry_ids = Importer.find(importerexporter.export_source).entries.pluck(:id)
|
209
|
+
complete_statuses = Status.latest_by_statusable
|
210
|
+
.includes(:statusable)
|
211
|
+
.where('bulkrax_statuses.statusable_id IN (?) AND bulkrax_statuses.statusable_type = ? AND status_message = ?', entry_ids, 'Bulkrax::Entry', 'Complete')
|
212
|
+
|
213
|
+
complete_entry_identifiers = complete_statuses.map { |s| s.statusable&.identifier&.gsub(':', '\:') }
|
214
|
+
extra_filters = extra_filters.presence || '*:*'
|
195
215
|
|
196
|
-
|
216
|
+
{ :@work_ids => ::Hyrax.config.curation_concerns, :@collection_ids => [::Collection], :@file_set_ids => [::FileSet] }.each do |instance_var, models_to_search|
|
217
|
+
instance_variable_set(instance_var, ActiveFedora::SolrService.get(
|
197
218
|
extra_filters.to_s,
|
198
|
-
fq:
|
219
|
+
fq: [
|
220
|
+
"#{work_identifier}_sim:(#{complete_entry_identifiers.join(' OR ')})",
|
221
|
+
"has_model_ssim:(#{models_to_search.join(' OR ')})"
|
222
|
+
],
|
199
223
|
fl: 'id',
|
200
224
|
rows: 2_000_000_000
|
201
|
-
)['response']['docs'].map { |obj| obj['id'] }
|
225
|
+
)['response']['docs'].map { |obj| obj['id'] })
|
202
226
|
end
|
203
227
|
end
|
204
228
|
|
205
229
|
def create_new_entries
|
206
|
-
|
230
|
+
current_record_ids.each_with_index do |id, index|
|
207
231
|
break if limit_reached?(limit, index)
|
208
|
-
|
232
|
+
|
233
|
+
this_entry_class = if @collection_ids.include?(id)
|
234
|
+
collection_entry_class
|
235
|
+
elsif @file_set_ids.include?(id)
|
236
|
+
file_set_entry_class
|
237
|
+
else
|
238
|
+
entry_class
|
239
|
+
end
|
240
|
+
new_entry = find_or_create_entry(this_entry_class, id, 'Bulkrax::Exporter')
|
241
|
+
|
209
242
|
begin
|
210
|
-
entry =
|
243
|
+
entry = ExportWorkJob.perform_now(new_entry.id, current_run.id)
|
211
244
|
rescue => e
|
212
245
|
Rails.logger.info("#{e.message} was detected during export")
|
213
246
|
end
|
247
|
+
|
214
248
|
self.headers |= entry.parsed_metadata.keys if entry
|
215
249
|
end
|
216
250
|
end
|
@@ -267,7 +301,7 @@ module Bulkrax
|
|
267
301
|
|
268
302
|
def write_files
|
269
303
|
CSV.open(setup_export_file, "w", headers: export_headers, write_headers: true) do |csv|
|
270
|
-
importerexporter.entries.where(identifier:
|
304
|
+
importerexporter.entries.where(identifier: current_record_ids)[0..limit || total].each do |e|
|
271
305
|
csv << e.parsed_metadata
|
272
306
|
end
|
273
307
|
end
|
data/lib/bulkrax/version.rb
CHANGED
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: 2.
|
4
|
+
version: 2.2.3
|
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-02-
|
11
|
+
date: 2022-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -378,7 +378,7 @@ homepage: https://github.com/samvera-labs/bulkrax
|
|
378
378
|
licenses:
|
379
379
|
- Apache-2.0
|
380
380
|
metadata: {}
|
381
|
-
post_install_message:
|
381
|
+
post_install_message:
|
382
382
|
rdoc_options: []
|
383
383
|
require_paths:
|
384
384
|
- lib
|
@@ -393,8 +393,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
393
393
|
- !ruby/object:Gem::Version
|
394
394
|
version: '0'
|
395
395
|
requirements: []
|
396
|
-
rubygems_version: 3.1.
|
397
|
-
signing_key:
|
396
|
+
rubygems_version: 3.1.2
|
397
|
+
signing_key:
|
398
398
|
specification_version: 4
|
399
399
|
summary: Import and export tool for Hyrax and Hyku
|
400
400
|
test_files: []
|