bulkrax 4.2.1 → 4.3.0

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: 11a3549082d5c6493135ed66fe5729474b4303bb8dec30ee20a8e00fe66f563d
4
- data.tar.gz: '08a021e73dc020a2791d1cf6e7f086a2cebdc5b511ffa2c83db004f31592a6af'
3
+ metadata.gz: 1c636e3c53228a9cd6f2d45356f10b2339265f5f3f11b32bd6e523a01388b60b
4
+ data.tar.gz: 6eeb6679cc8e93f77926baa30f91b09c9cea173d7d4135c2be9e865b558d5056
5
5
  SHA512:
6
- metadata.gz: '049aaefb66b149b6e57857f75ded3408a910578cdbbd3c8094a85fedeffc2416124e0369e22cab136e2620cd56c9516f7fcf9bf906897682f09f8b32b2ef9dcc'
7
- data.tar.gz: bf1a0ff60588f3b66295f6eb7941c80b4c2cb06cbbc68755145e5ec1688906103a8efd6e7ebb6fab5137460de9f1d3d6b5fe8191beac47cd8241ce0c35b250b2
6
+ metadata.gz: 389a8059749407dc1a6d9326e60131934b9729aaf33f1a4802c72255550fdf7e71ad874c88969e244dccf81e80ad95eb09e30179425fb1313fc2383d7f7adc7a
7
+ data.tar.gz: c58567026f654f0577377babd2311f537c3155f6c71833255d13730dc32eed51ec9a0708f0283b925e09945b59d338a14ffdb9945e0375de5ff7be120ed62559
@@ -47,6 +47,7 @@ function prepBulkrax(event) {
47
47
  var config = { childList: true, attributes: true };
48
48
  var callback = function(mutationsList) {
49
49
  for(var mutation of mutationsList) {
50
+
50
51
  if (mutation.type == 'childList') {
51
52
  browseButton = document.getElementById('browse');
52
53
  var exp = /selected_files\[[0-9]*\]\[url\]/
@@ -119,10 +120,35 @@ function handleParserKlass() {
119
120
  $('.parser_fields').append(window[parser_klass.data('partial')])
120
121
  }
121
122
 
123
+ handleBrowseEverything()
122
124
  var file_path_value = $('#importer_parser_fields_import_file_path').val()
123
125
  handleFileToggle(file_path_value)
124
126
  }
125
127
 
128
+ function handleBrowseEverything(){
129
+ var button = $("button[data-toggle='browse-everything']")
130
+ if(button.length == 0) { return; }
131
+ button.browseEverything({
132
+ route: button.data('route'),
133
+ target: button.data('target')
134
+ }).done(function(data) {
135
+ var evt = { isDefaultPrevented: function() { return false; } };
136
+ $('.ev-browser.show').removeClass('show')
137
+ if($('#fileupload').length > 0) {
138
+ var files = $.map(data, function(d) { return { name: d.file_name, size: d.file_size, id: d.url } });
139
+ $.blueimp.fileupload.prototype.options.done.call($('#fileupload').fileupload(), evt, { result: { files: files }});
140
+ }
141
+ return true
142
+ // User has submitted files; data contains an array of URLs and their options
143
+ }).cancel(function() {
144
+ $('.ev-browser.show').removeClass('show')
145
+ // User cancelled the browse operation
146
+ }).fail(function(status, error, text) {
147
+ $('.ev-browser.show').removeClass('show')
148
+ // URL retrieval experienced a technical failure
149
+ });
150
+ }
151
+
126
152
  function handleSourceLoad(refresh_button, base_url, external_set_select) {
127
153
  if (base_url.val() == "") { // ignore empty base_url value
128
154
  return
@@ -163,4 +189,4 @@ function setError(selector, error) {
163
189
  selector.attr('disabled', true)
164
190
  }
165
191
 
166
- $(document).on({'ready': prepBulkrax, 'turbolinks:load': prepBulkrax})
192
+ $(document).on({'ready': prepBulkrax, 'turbolinks:load': prepBulkrax})
@@ -22,7 +22,9 @@ module Bulkrax
22
22
  add_exporter_breadcrumbs
23
23
  add_breadcrumb @exporter.name
24
24
 
25
- @work_entries = @exporter.entries.where(type: @exporter.parser.entry_class.to_s).page(params[:work_entries_page])
25
+ @work_entries = @exporter.entries.where(type: @exporter.parser.entry_class.to_s).page(params[:work_entries_page]).per(30)
26
+ @collection_entries = @exporter.entries.where(type: @exporter.parser.collection_entry_class.to_s).page(params[:collections_entries_page]).per(30)
27
+ @file_set_entries = @exporter.entries.where(type: @exporter.parser.file_set_entry_class.to_s).page(params[:file_set_entries_page]).per(30)
26
28
  end
27
29
 
28
30
  # GET /exporters/new
@@ -112,12 +112,16 @@ module Bulkrax
112
112
  end
113
113
 
114
114
  def build_files_metadata
115
- file_mapping = key_for_export('file')
116
- file_sets = hyrax_record.file_set? ? Array.wrap(hyrax_record) : hyrax_record.file_sets
117
- filenames = map_file_sets(file_sets)
115
+ # attaching files to the FileSet row only so we don't have duplicates when importing to a new tenant
116
+ if hyrax_record.work?
117
+ build_thumbnail_files
118
+ else
119
+ file_mapping = key_for_export('file')
120
+ file_sets = hyrax_record.file_set? ? Array.wrap(hyrax_record) : hyrax_record.file_sets
121
+ filenames = map_file_sets(file_sets)
118
122
 
119
- handle_join_on_export(file_mapping, filenames, mapping['file']&.[]('join')&.present?)
120
- build_thumbnail_files if hyrax_record.work?
123
+ handle_join_on_export(file_mapping, filenames, mapping['file']&.[]('join')&.present?)
124
+ end
121
125
  end
122
126
 
123
127
  def build_relationship_metadata
@@ -134,7 +134,9 @@ module Bulkrax
134
134
 
135
135
  # Base path for imported and exported files
136
136
  def base_path(type = 'import')
137
- ENV['HYKU_MULTITENANT'] ? File.join(Bulkrax.send("#{type}_path"), Site.instance.account.name) : Bulkrax.send("#{type}_path")
137
+ # account for multiple versions of hyku
138
+ is_multitenant = ENV['HYKU_MULTITENANT'] == 'true' || ENV['SETTINGS__MULTITENANCY__ENABLED'] == 'true'
139
+ is_multitenant ? File.join(Bulkrax.send("#{type}_path"), ::Site.instance.account.name) : Bulkrax.send("#{type}_path")
138
140
  end
139
141
 
140
142
  # Path where we'll store the import metadata and files
@@ -134,7 +134,8 @@ module Bulkrax
134
134
 
135
135
  record.file_sets.each do |fs|
136
136
  file_name = filename(fs)
137
- next if file_name.blank?
137
+ next if file_name.blank? || fs.original_file.blank?
138
+
138
139
  io = open(fs.original_file.uri)
139
140
  file = Tempfile.new([file_name, File.extname(file_name)], binmode: true)
140
141
  file.write(io.read)
@@ -200,14 +200,14 @@ module Bulkrax
200
200
  # get the parent collection and child collections
201
201
  @collection_ids = ActiveFedora::SolrService.query("id:#{importerexporter.export_source} #{extra_filters}", method: :post, rows: 2_147_483_647).map(&:id)
202
202
  @collection_ids += ActiveFedora::SolrService.query("has_model_ssim:Collection AND member_of_collection_ids_ssim:#{importerexporter.export_source}", method: :post, rows: 2_147_483_647).map(&:id)
203
+ find_child_file_sets(@work_ids)
203
204
  when 'worktype'
204
205
  @work_ids = ActiveFedora::SolrService.query("has_model_ssim:#{importerexporter.export_source + extra_filters}", method: :post, rows: 2_000_000_000).map(&:id)
206
+ find_child_file_sets(@work_ids)
205
207
  when 'importer'
206
208
  set_ids_for_exporting_from_importer
207
209
  end
208
210
 
209
- find_child_file_sets(@work_ids) if importerexporter.export_from == 'collection'
210
-
211
211
  @work_ids + @collection_ids + @file_set_ids
212
212
  end
213
213
  # rubocop:enable Metrics/AbcSize
@@ -355,9 +355,9 @@ module Bulkrax
355
355
  path = File.join(exporter_export_path, folder_count, 'files')
356
356
  FileUtils.mkdir_p(path) unless File.exist? path
357
357
  file = filename(fs)
358
- io = open(fs.original_file.uri)
359
- next if file.blank?
358
+ next if file.blank? || fs.original_file.blank?
360
359
 
360
+ io = open(fs.original_file.uri)
361
361
  File.open(File.join(path, file), 'wb') do |f|
362
362
  f.write(io.read)
363
363
  f.close
@@ -455,9 +455,10 @@ module Bulkrax
455
455
  def path_to_files(**args)
456
456
  filename = args.fetch(:filename, '')
457
457
 
458
- @path_to_files ||= File.join(
459
- zip? ? importer_unzip_path : File.dirname(import_file_path), 'files', filename
460
- )
458
+ return @path_to_files if @path_to_files.present? && filename.blank?
459
+ @path_to_files = File.join(
460
+ zip? ? importer_unzip_path : File.dirname(import_file_path), 'files', filename
461
+ )
461
462
  end
462
463
 
463
464
  private
@@ -87,49 +87,25 @@
87
87
 
88
88
  <p class='bulkrax-p-align'><strong><%= t('bulkrax.exporter.labels.field_mapping') %>:</strong></p>
89
89
 
90
- <p class='bulkrax-p-align'>
91
- <strong><%= t('bulkrax.exporter.labels.total_work_entries') %>:</strong>
92
- <%= @exporter.exporter_runs.last&.total_work_entries %>
90
+ <p class="bulkrax-p-align" title="<%= @exporter.last_run&.total_work_entries %> processed, <%= @exporter.last_run&.failed_records %> failed">
91
+ <strong>Total Entries:</strong>
92
+ <%= @exporter.last_run&.total_work_entries %>
93
93
  </p>
94
94
  <br>
95
- <div class='bulkrax-nav-tab-table-left-align'>
96
- <h2>Entries</h2>
97
- <table class='table table-striped'>
98
- <thead>
99
- <tr>
100
- <th>Identifier</th>
101
- <th>Entry ID</th>
102
- <th>Status</th>
103
- <th>Errors</th>
104
- <th>Status Set At</th>
105
- <th>Actions</th>
106
- </tr>
107
- </thead>
108
- <tbody>
109
- <% @work_entries.each do |e| %>
110
- <tr>
111
- <td><%= link_to e.identifier, bulkrax.exporter_entry_path(@exporter.id, e.id) %></td>
112
- <td><%= e.id %></td>
113
- <% if e.status == 'Complete' %>
114
- <td><span class='glyphicon glyphicon-ok' style='color: green;'></span> <%= e.status %></td>
115
- <% elsif e.status == 'Pending' %>
116
- <td><span class='glyphicon glyphicon-option-horizontal' style='color: blue;'></span> <%= e.status %></td>
117
- <% else %>
118
- <td><span class='glyphicon glyphicon-remove' style='color: red;'></span> <%= e.status %></td>
119
- <% end %>
120
- <% if e.last_error.present? %>
121
- <td><%= link_to e.last_error.dig('error_class'), bulkrax.exporter_entry_path(@exporter.id, e.id) %></td>
122
- <% else %>
123
- <td></td>
124
- <% end %>
125
- <td><%= e.status_at %></td>
126
- <td><%= link_to raw("<span class='glyphicon glyphicon-info-sign'></span>"), bulkrax.exporter_entry_path(@exporter.id, e.id) %></td>
127
- </tr>
128
- <% end %>
129
- </tbody>
130
- </table>
131
- <%= page_entries_info(@work_entries) %><br>
132
- <%= paginate(@work_entries, param_name: :work_entries_page) %>
95
+
96
+ <div class="bulkrax-nav-tab-bottom-margin">
97
+ <!-- Nav tabs -->
98
+ <ul class="bulkrax-nav-tab-top-margin tab-nav nav nav-tabs" role="tablist">
99
+ <li role="presentation" class='active'><a href="#work-entries" aria-controls="work-entries" role="tab" data-toggle="tab">Work Entries</a></li>
100
+ <li role="presentation"><a href="#collection-entries" aria-controls="collection-entries" role="tab" data-toggle="tab">Collection Entries</a></li>
101
+ <li role="presentation"><a href="#file-set-entries" aria-controls="file-set-entries" role="tab" data-toggle="tab">File Set Entries</a></li>
102
+ </ul>
103
+ <!-- Tab panes -->
104
+ <div class="tab-content outline">
105
+ <%= render partial: 'bulkrax/shared/work_entries_tab', locals: { item: @exporter, entries: @work_entries } %>
106
+ <%= render partial: 'bulkrax/shared/collection_entries_tab', locals: { item: @exporter, entries: @collection_entries } %>
107
+ <%= render partial: 'bulkrax/shared/file_set_entries_tab', locals: { item: @exporter, entries: @file_set_entries } %>
108
+ </div>
133
109
  <br>
134
110
  <%= link_to 'Edit', edit_exporter_path(@exporter) %>
135
111
  |
@@ -4,7 +4,7 @@
4
4
 
5
5
  <div class="row">
6
6
  <div class="col-md-12">
7
- <div class="panel panel-default tabs">
7
+ <div class="panel panel-default tabs importer-form">
8
8
 
9
9
  <%= simple_form_for @importer, html: { multipart: true } do |form| %>
10
10
  <%= render 'form', importer: @importer, form: form %>
@@ -4,7 +4,7 @@
4
4
 
5
5
  <div class="row">
6
6
  <div class="col-md-12">
7
- <div class="panel panel-default tabs">
7
+ <div class="panel panel-default tabs importer-form">
8
8
  <%= simple_form_for @importer, html: { multipart: true } do |form| %>
9
9
  <%= render 'form', importer: @importer, form: form %>
10
10
  <div class="panel-footer">
@@ -80,120 +80,9 @@
80
80
  </ul>
81
81
  <!-- Tab panes -->
82
82
  <div class="tab-content outline">
83
- <div role="tabpanel" class="tab-pane active bulkrax-nav-tab-table-left-align" id="work-entries">
84
- <table class='table table-striped'>
85
- <thead>
86
- <tr>
87
- <th>Identifier</th>
88
- <th>Entry ID</th>
89
- <th>Status</th>
90
- <th>Errors</th>
91
- <th>Status Set At</th>
92
- <th>Actions</th>
93
- </tr>
94
- </thead>
95
- <tbody>
96
- <% @work_entries.each do |e| %>
97
- <tr>
98
- <td><%= link_to e.identifier, bulkrax.importer_entry_path(@importer.id, e.id) %></td>
99
- <td><%= e.id %></td>
100
- <% if e.status == "Complete" %>
101
- <td><span class="glyphicon glyphicon-ok" style="color: green;"></span> <%= e.status %></td>
102
- <% elsif e.status == "Pending" %>
103
- <td><span class="glyphicon glyphicon-option-horizontal" style="color: blue;"></span> <%= e.status %></td>
104
- <% else %>
105
- <td><span class="glyphicon glyphicon-remove" style="color: <%= e.status == 'Deleted' ? 'green' : 'red' %>;"></span> <%= e.status %></td>
106
- <% end %>
107
- <% if e.last_error.present? %>
108
- <td><%= link_to e.last_error.dig("error_class"), bulkrax.importer_entry_path(@importer.id, e.id) %></td>
109
- <% else %>
110
- <td></td>
111
- <% end %>
112
- <td><%= e.status_at %></td>
113
- <td><%= link_to raw('<span class="glyphicon glyphicon-info-sign"></span>'), bulkrax.importer_entry_path(@importer.id, e.id) %></td>
114
- </tr>
115
- <% end %>
116
- </tbody>
117
- </table>
118
- <%= page_entries_info(@work_entries) %><br />
119
- <%= paginate(@work_entries, theme: 'blacklight', param_name: :work_entries_page, params: { anchor: 'work-entries'}) %>
120
- </div>
121
- <div role="tabpanel" class="tab-pane bulkrax-nav-tab-table-left-align" id="collection-entries">
122
- <table class='table table-striped'>
123
- <thead>
124
- <tr>
125
- <th>Identifier</th>
126
- <th>Entry ID</th>
127
- <th>Status</th>
128
- <th>Errors</th>
129
- <th>Status Set At</th>
130
- <th>Actions</th>
131
- </tr>
132
- </thead>
133
- <tbody>
134
- <% @collection_entries.each do |e| %>
135
- <tr>
136
- <td><%= link_to e.identifier, bulkrax.importer_entry_path(@importer.id, e.id) %></td>
137
- <td><%= e.id %></td>
138
- <% if e.status == "Complete" %>
139
- <td><span class="glyphicon glyphicon-ok" style="color: green;"></span> <%= e.status %></td>
140
- <% elsif e.status == "Pending" %>
141
- <td><span class="glyphicon glyphicon-option-horizontal" style="color: blue;"></span> <%= e.status %></td>
142
- <% else %>
143
- <td><span class="glyphicon glyphicon-remove" style="color: <%= e.status == 'Deleted' ? 'green' : 'red' %>;"></span> <%= e.status %></td>
144
- <% end %>
145
- <% if e.last_error.present? %>
146
- <td><%= link_to e.last_error.dig("error_class"), bulkrax.importer_entry_path(@importer.id, e.id) %></td>
147
- <% else %>
148
- <td></td>
149
- <% end %>
150
- <td><%= e.status_at %></td>
151
- <td><%= link_to raw('<span class="glyphicon glyphicon-info-sign"></span>'), bulkrax.importer_entry_path(@importer.id, e.id) %></td>
152
- </tr>
153
- <% end %>
154
- </tbody>
155
- </table>
156
- <%= page_entries_info(@collection_entries) %><br />
157
- <%= paginate(@collection_entries, theme: 'blacklight', param_name: :collections_entries_page, params: {anchor: 'collection-entries'}) %>
158
- </div>
159
- <div role="tabpanel" class="tab-pane bulkrax-nav-tab-table-left-align" id="file-set-entries">
160
- <table class='table table-striped'>
161
- <thead>
162
- <tr>
163
- <th>Identifier</th>
164
- <th>Entry ID</th>
165
- <th>Status</th>
166
- <th>Errors</th>
167
- <th>Status Set At</th>
168
- <th>Actions</th>
169
- </tr>
170
- </thead>
171
- <tbody>
172
- <% @file_set_entries.each do |e| %>
173
- <tr>
174
- <td><%= link_to e.identifier, bulkrax.importer_entry_path(@importer.id, e.id) %></td>
175
- <td><%= e.id %></td>
176
- <% if e.status == "Complete" %>
177
- <td><span class="glyphicon glyphicon-ok" style="color: green;"></span> <%= e.status %></td>
178
- <% elsif e.status == "Pending" %>
179
- <td><span class="glyphicon glyphicon-option-horizontal" style="color: blue;"></span> <%= e.status %></td>
180
- <% else %>
181
- <td><span class="glyphicon glyphicon-remove" style="color: <%= e.status == 'Deleted' ? 'green' : 'red' %>;"></span> <%= e.status %></td>
182
- <% end %>
183
- <% if e.last_error.present? %>
184
- <td><%= link_to e.last_error.dig("error_class"), bulkrax.importer_entry_path(@importer.id, e.id) %></td>
185
- <% else %>
186
- <td></td>
187
- <% end %>
188
- <td><%= e.status_at %></td>
189
- <td><%= link_to raw('<span class="glyphicon glyphicon-info-sign"></span>'), bulkrax.importer_entry_path(@importer.id, e.id) %></td>
190
- </tr>
191
- <% end %>
192
- </tbody>
193
- </table>
194
- <%= page_entries_info(@file_set_entries) %><br />
195
- <%= paginate(@file_set_entries, theme: 'blacklight', param_name: :file_set_entries_page, params: {anchor: 'file-set-entries'}) %>
196
- </div>
83
+ <%= render partial: 'bulkrax/shared/work_entries_tab', locals: { item: @importer, entries: @work_entries } %>
84
+ <%= render partial: 'bulkrax/shared/collection_entries_tab', locals: { item: @importer, entries: @collection_entries } %>
85
+ <%= render partial: 'bulkrax/shared/file_set_entries_tab', locals: { item: @importer, entries: @file_set_entries } %>
197
86
  </div>
198
87
  </div>
199
88
 
@@ -0,0 +1,39 @@
1
+ <div role="tabpanel" class="tab-pane bulkrax-nav-tab-table-left-align" id="collection-entries">
2
+ <table class='table table-striped'>
3
+ <thead>
4
+ <tr>
5
+ <th>Identifier</th>
6
+ <th>Entry ID</th>
7
+ <th>Status</th>
8
+ <th>Errors</th>
9
+ <th>Status Set At</th>
10
+ <th>Actions</th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <% entries.each do |e| %>
15
+ <% entry_path = item.class.to_s.include?('Importer') ? bulkrax.importer_entry_path(item.id, e.id) : bulkrax.exporter_entry_path(item.id, e.id) %>
16
+ <tr>
17
+ <td><%= link_to e.identifier, entry_path %></td>
18
+ <td><%= e.id %></td>
19
+ <% if e.status == "Complete" %>
20
+ <td><span class="glyphicon glyphicon-ok" style="color: green;"></span> <%= e.status %></td>
21
+ <% elsif e.status == "Pending" %>
22
+ <td><span class="glyphicon glyphicon-option-horizontal" style="color: blue;"></span> <%= e.status %></td>
23
+ <% else %>
24
+ <td><span class="glyphicon glyphicon-remove" style="color: <%= e.status == 'Deleted' ? 'green' : 'red' %>;"></span> <%= e.status %></td>
25
+ <% end %>
26
+ <% if e.last_error.present? %>
27
+ <td><%= link_to e.last_error.dig("error_class"), entry_path %></td>
28
+ <% else %>
29
+ <td></td>
30
+ <% end %>
31
+ <td><%= e.status_at %></td>
32
+ <td><%= link_to raw('<span class="glyphicon glyphicon-info-sign"></span>'), entry_path %></td>
33
+ </tr>
34
+ <% end %>
35
+ </tbody>
36
+ </table>
37
+ <%= page_entries_info(entries) %><br />
38
+ <%= paginate(entries, theme: 'blacklight', param_name: :collections_entries_page, params: { anchor: 'collection-entries' }) %>
39
+ </div>
@@ -0,0 +1,39 @@
1
+ <div role="tabpanel" class="tab-pane bulkrax-nav-tab-table-left-align" id="file-set-entries">
2
+ <table class='table table-striped'>
3
+ <thead>
4
+ <tr>
5
+ <th>Identifier</th>
6
+ <th>Entry ID</th>
7
+ <th>Status</th>
8
+ <th>Errors</th>
9
+ <th>Status Set At</th>
10
+ <th>Actions</th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <% entries.each do |e| %>
15
+ <% entry_path = item.class.to_s.include?('Importer') ? bulkrax.importer_entry_path(item.id, e.id) : bulkrax.exporter_entry_path(item.id, e.id) %>
16
+ <tr>
17
+ <td><%= link_to e.identifier, bulkrax.importer_entry_path(item.id, e.id) %></td>
18
+ <td><%= e.id %></td>
19
+ <% if e.status == "Complete" %>
20
+ <td><span class="glyphicon glyphicon-ok" style="color: green;"></span> <%= e.status %></td>
21
+ <% elsif e.status == "Pending" %>
22
+ <td><span class="glyphicon glyphicon-option-horizontal" style="color: blue;"></span> <%= e.status %></td>
23
+ <% else %>
24
+ <td><span class="glyphicon glyphicon-remove" style="color: <%= e.status == 'Deleted' ? 'green' : 'red' %>;"></span> <%= e.status %></td>
25
+ <% end %>
26
+ <% if e.last_error.present? %>
27
+ <td><%= link_to e.last_error.dig("error_class"), bulkrax.importer_entry_path(item.id, e.id) %></td>
28
+ <% else %>
29
+ <td></td>
30
+ <% end %>
31
+ <td><%= e.status_at %></td>
32
+ <td><%= link_to raw('<span class="glyphicon glyphicon-info-sign"></span>'), bulkrax.importer_entry_path(item.id, e.id) %></td>
33
+ </tr>
34
+ <% end %>
35
+ </tbody>
36
+ </table>
37
+ <%= page_entries_info(entries) %><br />
38
+ <%= paginate(entries, theme: 'blacklight', param_name: :file_set_entries_page, params: { anchor: 'file-set-entries' }) %>
39
+ </div>
@@ -0,0 +1,39 @@
1
+ <div role="tabpanel" class="tab-pane active bulkrax-nav-tab-table-left-align" id="work-entries">
2
+ <table class='table table-striped'>
3
+ <thead>
4
+ <tr>
5
+ <th>Identifier</th>
6
+ <th>Entry ID</th>
7
+ <th>Status</th>
8
+ <th>Errors</th>
9
+ <th>Status Set At</th>
10
+ <th>Actions</th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <% entries.each do |e| %>
15
+ <% entry_path = item.class.to_s.include?('Importer') ? bulkrax.importer_entry_path(item.id, e.id) : bulkrax.exporter_entry_path(item.id, e.id) %>
16
+ <tr>
17
+ <td><%= link_to e.identifier, entry_path %></td>
18
+ <td><%= e.id %></td>
19
+ <% if e.status == "Complete" %>
20
+ <td><span class="glyphicon glyphicon-ok" style="color: green;"></span> <%= e.status %></td>
21
+ <% elsif e.status == "Pending" %>
22
+ <td><span class="glyphicon glyphicon-option-horizontal" style="color: blue;"></span> <%= e.status %></td>
23
+ <% else %>
24
+ <td><span class="glyphicon glyphicon-remove" style="color: <%= e.status == 'Deleted' ? 'green' : 'red' %>;"></span> <%= e.status %></td>
25
+ <% end %>
26
+ <% if e.last_error.present? %>
27
+ <td><%= link_to e.last_error.dig("error_class"), entry_path %></td>
28
+ <% else %>
29
+ <td></td>
30
+ <% end %>
31
+ <td><%= e.status_at %></td>
32
+ <td><%= link_to raw('<span class="glyphicon glyphicon-info-sign"></span>'), entry_path %></td>
33
+ </tr>
34
+ <% end %>
35
+ </tbody>
36
+ </table>
37
+ <%= page_entries_info(entries) %><br />
38
+ <%= paginate(entries, theme: 'blacklight', param_name: :work_entries_page, params: { anchor: 'work-entries' }) %>
39
+ </div>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bulkrax
4
- VERSION = '4.2.1'
4
+ VERSION = '4.3.0'
5
5
  end
@@ -3,28 +3,27 @@
3
3
  namespace :bulkrax do
4
4
  desc "Remove old exported zips and create new ones with the new file structure"
5
5
  task rerun_all_exporters: :environment do
6
+ # delete the existing folders and zip files
7
+ Dir["tmp/exports/**"].each { |file| FileUtils.rm_rf(file) }
8
+
6
9
  if defined?(::Hyku)
7
10
  Account.find_each do |account|
8
- puts "=============== updating #{account.name} ============"
9
11
  next if account.name == "search"
10
12
  switch!(account)
13
+ puts "=============== updating #{account.name} ============"
11
14
 
12
- rerun_exporters_and_delete_zips
15
+ make_new_exports
13
16
 
14
17
  puts "=============== finished updating #{account.name} ============"
15
18
  end
16
19
  else
17
- rerun_exporters_and_delete_zips
20
+ make_new_exports
18
21
  end
19
22
  end
20
23
 
21
- def rerun_exporters_and_delete_zips
22
- begin
23
- Bulkrax::Exporter.all.each { |e| Bulkrax::ExporterJob.perform_later(e.id) }
24
- rescue => e
25
- puts "(#{e.message})"
26
- end
27
-
28
- Dir["tmp/exports/**.zip"].each { |zip_path| FileUtils.rm_rf(zip_path) }
24
+ def make_new_exports
25
+ Bulkrax::Exporter.all.each { |e| Bulkrax::ExporterJob.perform_later(e.id) }
26
+ rescue => e
27
+ puts "(#{e.message})"
29
28
  end
30
29
  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: 4.2.1
4
+ version: 4.3.0
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-07-20 00:00:00.000000000 Z
11
+ date: 2022-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -351,6 +351,9 @@ files:
351
351
  - app/views/bulkrax/importers/upload_corrected_entries.html.erb
352
352
  - app/views/bulkrax/shared/_bulkrax_errors.html.erb
353
353
  - app/views/bulkrax/shared/_bulkrax_field_mapping.html.erb
354
+ - app/views/bulkrax/shared/_collection_entries_tab.html.erb
355
+ - app/views/bulkrax/shared/_file_set_entries_tab.html.erb
356
+ - app/views/bulkrax/shared/_work_entries_tab.html.erb
354
357
  - app/views/hyrax/dashboard/sidebar/_bulkrax_sidebar_additions.html.erb
355
358
  - app/views/hyrax/dashboard/sidebar/_repository_content.html.erb
356
359
  - app/views/layouts/bulkrax/application.html.erb