bulkrax 2.1.0 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a5ca12cf97da052d9855404c783d52e41679587332ac72aac25d85237cf8231
4
- data.tar.gz: 449209843d001cdac64dd4073db130920bb62a3193b2eefd53b94f2ec15f6a08
3
+ metadata.gz: 5c5379ae0706c7c37e870551d1da67a526d793b4dc91e9afd41fe275d39c4d48
4
+ data.tar.gz: 2de4caa074846ebacdfcaed54265011a8a1b8f9d97309e6aa219a4e36497d6e7
5
5
  SHA512:
6
- metadata.gz: 296ef3a7a7af8765aaae12353bec7ecfb35a97546955520ac544269525adfe459f3e686886fefbff54c91ba09f7da20c3b6b8c62bcb3fc7be6970f7967defa17
7
- data.tar.gz: e7a13f384940a89d42c5efb5d52b8e940939c103dceb35890e08cb56ee020c2c664d1bb4d57945ae9d7afb2acd822385861e004ab7d69c776a0816d688cf66e1
6
+ metadata.gz: e2f138b62a46cc199f7d538294e7850fa3e2bbe9bfa4f3b2643dde3c354b0366d39d08222577a339955f9446257f09deaaa889d4d172c809f230ec2cb48309c0
7
+ data.tar.gz: 8ca99cfc04657975c93b4e8379df1672c0254a6cd5612bd5bff69b9fdfcf3b98381fbd757b2a85531150f3ae02e149f660c23f41133a63640a4e254719fbc7e8
@@ -12,7 +12,7 @@ module Bulkrax
12
12
 
13
13
  parsed_metadata['file'][i] = path_to_file
14
14
  end
15
- raise ::StandardError, 'one or more file paths are invalid' unless parsed_metadata['file'].map { |file_path| ::File.file?(file_path) }.all?
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: 'inline', type: download_content_type, filename: file_name }
33
+ { disposition: 'attachment', type: download_content_type, filename: file_name }
34
34
  end
35
35
 
36
36
  # render an HTTP HEAD response
@@ -99,7 +99,7 @@ module Bulkrax
99
99
  metadata = if collection.delete(:from_collection_field_mapping)
100
100
  uci = unique_collection_identifier(collection)
101
101
  {
102
- title: [collection[:title]],
102
+ title: collection[:title],
103
103
  work_identifier => uci,
104
104
  source_identifier => uci,
105
105
  visibility: 'open',
@@ -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
- entry_ids = Bulkrax::Importer.find(importerexporter.export_source).entries.pluck(:id)
189
- complete_statuses = Bulkrax::Status.latest_by_statusable
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
- complete_entry_identifiers = complete_statuses.map { |s| s.statusable&.identifier&.gsub(':', '\:') }
194
- extra_filters = extra_filters.presence || '*:*'
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
- ActiveFedora::SolrService.get(
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: "#{work_identifier}_sim:(#{complete_entry_identifiers.join(' OR ')})",
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
- current_work_ids.each_with_index do |wid, index|
230
+ current_record_ids.each_with_index do |id, index|
207
231
  break if limit_reached?(limit, index)
208
- new_entry = find_or_create_entry(entry_class, wid, 'Bulkrax::Exporter')
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 = Bulkrax::ExportWorkJob.perform_now(new_entry.id, current_run.id)
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: current_work_ids)[0..limit || total].each do |e|
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
@@ -7,6 +7,10 @@
7
7
  </div>
8
8
  <% end %>
9
9
 
10
+ <% content_for(:head) do %>
11
+ <meta name="turbolinks-cache-control" content="no-cache">
12
+ <% end %>
13
+
10
14
  <div class="panel panel-default">
11
15
  <div class="panel-body">
12
16
  <% if @exporters.present? %>
@@ -7,6 +7,10 @@
7
7
  </div>
8
8
  <% end %>
9
9
 
10
+ <% content_for(:head) do %>
11
+ <meta name="turbolinks-cache-control" content="no-cache">
12
+ <% end %>
13
+
10
14
  <div class="panel panel-default">
11
15
  <div class="panel-body">
12
16
  <% if @importers.present? %>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bulkrax
4
- VERSION = '2.1.0'
4
+ VERSION = '2.2.2'
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: 2.1.0
4
+ version: 2.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Kaufman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-02 00:00:00.000000000 Z
11
+ date: 2022-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails