bulkrax 4.2.1 → 4.3.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 +4 -4
- data/app/assets/javascripts/bulkrax/importers.js.erb +27 -1
- data/app/controllers/bulkrax/exporters_controller.rb +3 -1
- data/app/models/bulkrax/csv_entry.rb +9 -5
- data/app/parsers/bulkrax/application_parser.rb +3 -1
- data/app/parsers/bulkrax/bagit_parser.rb +2 -1
- data/app/parsers/bulkrax/csv_parser.rb +8 -7
- data/app/views/bulkrax/exporters/show.html.erb +17 -41
- data/app/views/bulkrax/importers/edit.html.erb +1 -1
- data/app/views/bulkrax/importers/new.html.erb +1 -1
- data/app/views/bulkrax/importers/show.html.erb +3 -114
- data/app/views/bulkrax/shared/_collection_entries_tab.html.erb +39 -0
- data/app/views/bulkrax/shared/_file_set_entries_tab.html.erb +39 -0
- data/app/views/bulkrax/shared/_work_entries_tab.html.erb +39 -0
- data/lib/bulkrax/version.rb +1 -1
- data/lib/tasks/bulkrax_tasks.rake +10 -11
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c636e3c53228a9cd6f2d45356f10b2339265f5f3f11b32bd6e523a01388b60b
|
4
|
+
data.tar.gz: 6eeb6679cc8e93f77926baa30f91b09c9cea173d7d4135c2be9e865b558d5056
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
116
|
-
|
117
|
-
|
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
|
-
|
120
|
-
|
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
|
-
|
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
|
-
|
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
|
459
|
-
|
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=
|
91
|
-
<strong
|
92
|
-
<%= @exporter.
|
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
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
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
|
-
|
84
|
-
|
85
|
-
|
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>
|
data/lib/bulkrax/version.rb
CHANGED
@@ -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
|
-
|
15
|
+
make_new_exports
|
13
16
|
|
14
17
|
puts "=============== finished updating #{account.name} ============"
|
15
18
|
end
|
16
19
|
else
|
17
|
-
|
20
|
+
make_new_exports
|
18
21
|
end
|
19
22
|
end
|
20
23
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
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.
|
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-
|
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
|