cdm_migrator 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -5
- data/app/assets/stylesheets/cdm_migrator/csv_checker.css +37 -0
- data/app/controllers/cdm_migrator/cdm_controller.rb +3 -3
- data/app/controllers/cdm_migrator/csv_controller.rb +103 -18
- data/app/jobs/cdm_migrator/create_work_job.rb +6 -0
- data/app/views/cdm_migrator/csv/csv_checker.html.erb +46 -0
- data/config/routes.rb +2 -2
- data/lib/cdm_migrator/version.rb +1 -1
- data/lib/generators/cdm_migrator/install/install_generator.rb +10 -2
- data/lib/generators/cdm_migrator/install/templates/config/cdm_migrator.yml +32 -19
- data/lib/generators/cdm_migrator/install/templates/sidebar/_tasks.html.erb +2 -2
- metadata +4 -3
- data/app/views/cdm_migrator/csv/file_path_checker.html.erb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 330afa0ea8f2de397dc822fafef651778e039b0b422ec8ab93e61bd4ed6e9ced
|
4
|
+
data.tar.gz: 6860866888bf49430fbbb4eace6e38bb7b2da09f6b8633608e7508cac374dc4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f263a7da82234a60ac6ac4f73529b226762b483dee9ce093712f8dd3c34dc97b3b1b96b5b62cbc98d0de5f2dc1157367b5c1352a5cb79bd7703f45a707ceb034
|
7
|
+
data.tar.gz: f4f095574c88c63970d2de9032ad96ad134ff34952b78068a2ddceee404d9998134ccfac15ee29ca75d2ac9c7b8f4a3a4db33030b6218d8b100afa64ea357cd3
|
data/README.md
CHANGED
@@ -27,11 +27,12 @@ to insert the yml and add a link to your Hyrax dashboard
|
|
27
27
|
|
28
28
|
## Usage
|
29
29
|
1. Add your ContentDM url and api port to the cdm_migrator.yml file.
|
30
|
-
2.
|
31
|
-
3.
|
32
|
-
4.
|
33
|
-
5.
|
34
|
-
6.
|
30
|
+
2. Configure the CSV Checker with the appropriate fields, paths, or multi-value separator (in cdm_migrator.yml).
|
31
|
+
3. Navigate to the *cdm_migrator/collection* url to select your contentdm collection and what type of work you want to export it to and click "choose mappings".
|
32
|
+
4. Map the ContentDM fields to your Hyrax work and file fields\* and click "generate CSV".
|
33
|
+
5. Refine the CSV as you see fit. Optional: go to *cdm_migrator/csv_checker* and upload it to validate metadata fields and/or file paths.
|
34
|
+
6. Navigate to the *cdm_migrator/upload* url; choose your multi-value separator (default is |) and upload your CSV file.
|
35
|
+
7. Done.
|
35
36
|
|
36
37
|
\* cdm_migrator uses the generated Hyrax forms (ex. Hyrax::Forms::GenericWorkForm) in your host application to obtain it's terms for mapping. If you have added terms to your FileSet model extend the Hyrax::Forms::FileSetEditForm with Hyrax::FileSetForm in your host application so that the changes will be detected by the migrator. You can also add a list of fields in the yml file, under "default fields".
|
37
38
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
.csv-collapse-link.collapsed {
|
2
|
+
display: inline-block;
|
3
|
+
vertical-align: top;
|
4
|
+
}
|
5
|
+
|
6
|
+
#csv-collapse-link-text::after {
|
7
|
+
content: "❯";
|
8
|
+
display: inline-block;
|
9
|
+
font-size: smaller;
|
10
|
+
right: 15px;
|
11
|
+
transform: rotate(90deg);
|
12
|
+
margin-left: 0.5em;
|
13
|
+
}
|
14
|
+
|
15
|
+
.collapsed #csv-collapse-link-text::after {
|
16
|
+
transform: rotate(0deg);
|
17
|
+
transition: transform 0.1s ease;
|
18
|
+
margin-left: 2px;
|
19
|
+
vertical-align: top;
|
20
|
+
}
|
21
|
+
|
22
|
+
#errors-explanation ul li {
|
23
|
+
list-style-type: none;
|
24
|
+
margin-bottom: 2px;
|
25
|
+
}
|
26
|
+
|
27
|
+
#errors-explanation ul {
|
28
|
+
padding-left: 0;
|
29
|
+
}
|
30
|
+
|
31
|
+
#errors-explanation {
|
32
|
+
margin-top: 5px;
|
33
|
+
}
|
34
|
+
|
35
|
+
#csv-form {
|
36
|
+
margin-top: 1em;
|
37
|
+
}
|
@@ -104,10 +104,10 @@ module CdmMigrator
|
|
104
104
|
|
105
105
|
def load_yaml
|
106
106
|
stripped_url = request.base_url.dup.gsub(/https?:\/\//, '').gsub(/:[0-9]*/,'')
|
107
|
-
if CdmMigrator::Engine.config['
|
108
|
-
tenant = CdmMigrator::Engine.config['
|
107
|
+
if CdmMigrator::Engine.config['tenant_settings'].key? stripped_url
|
108
|
+
tenant = CdmMigrator::Engine.config['tenant_settings'][stripped_url]['cdm_api']
|
109
109
|
else
|
110
|
-
tenant = CdmMigrator::Engine.config['
|
110
|
+
tenant = CdmMigrator::Engine.config['tenant_settings']['default']['cdm_api']
|
111
111
|
end
|
112
112
|
@cdm_url = tenant['url']
|
113
113
|
@cdm_port = tenant['port']
|
@@ -4,15 +4,15 @@ module CdmMigrator
|
|
4
4
|
include ActionView::Helpers::UrlHelper
|
5
5
|
layout 'hyrax/dashboard' if Hyrax
|
6
6
|
before_action :authenticate, except: :index
|
7
|
+
before_action :load_config, only: :csv_checker
|
7
8
|
|
8
|
-
def
|
9
|
+
def csv_checker
|
9
10
|
if params[:file]
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
flash[:notice] = "All file paths are valid."
|
11
|
+
check_csv params[:file].path
|
12
|
+
if @error_list.blank?
|
13
|
+
flash[:notice] = "All data are valid."
|
14
14
|
else
|
15
|
-
flash[:error] = "
|
15
|
+
flash[:error] = "The CSV Checker found some errors in the CSV. Please correct them and check again."
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -41,9 +41,9 @@ module CdmMigrator
|
|
41
41
|
File.open(csv, 'wb') do |file|
|
42
42
|
file.write(params[:csv_import][:csv_file].read)
|
43
43
|
end
|
44
|
-
|
45
|
-
if @
|
46
|
-
flash[:error] = "some
|
44
|
+
check_csv csv
|
45
|
+
if @error_list.present?
|
46
|
+
flash[:error] = "Cdm Migrator found some problems with the CSV. Use the CSV Checker for more details."
|
47
47
|
end
|
48
48
|
parse_csv(csv, params[:csv_import][:mvs])
|
49
49
|
|
@@ -203,19 +203,104 @@ module CdmMigrator
|
|
203
203
|
end
|
204
204
|
end
|
205
205
|
|
206
|
-
|
207
|
-
|
208
|
-
|
206
|
+
def load_config
|
207
|
+
tenant = Account.find_by(tenant: Apartment::Tenant.current).cname
|
208
|
+
if CdmMigrator::Engine.config['tenant_settings'].has_key?(tenant)
|
209
|
+
settings = CdmMigrator::Engine.config['tenant_settings'][tenant]['csv_checker']
|
210
|
+
if settings.present?
|
211
|
+
# .map will throw an error if settings[key] has no value
|
212
|
+
@edtf_fields = settings['edtf_fields'].map(&:to_sym) if settings['edtf_fields']
|
213
|
+
@uri_fields = settings['valid_uri_fields'].map(&:to_sym) if settings['valid_uri_fields']
|
214
|
+
@separator = settings['multi_value_separator']
|
215
|
+
@separator_fields = settings['separator_fields'].map(&:to_sym) if settings['separator_fields']
|
216
|
+
@path_to_drive = settings['path_to_drive']
|
217
|
+
else
|
218
|
+
raise "Cdm Migrator couldn't find any configured settings. Are they in cdm_migrator.yml?"
|
219
|
+
end
|
220
|
+
else
|
221
|
+
raise "Cdm Migrator couldn't find this tenant. Is it configured?"
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
def check_csv csv_file
|
226
|
+
row_number = 1
|
227
|
+
@error_list = {}
|
228
|
+
check_mounted_drive if @path_to_drive.present?
|
229
|
+
|
230
|
+
CSV.foreach(csv_file, headers: true, header_converters: :symbol) do |row|
|
231
|
+
row_number +=1 # Tells user what CSV row the error is on
|
232
|
+
if row[:object_type].include? "Work"
|
233
|
+
check_edtf(row_number, row) if @edtf_fields.present?
|
234
|
+
check_uris(row_number, row) if @uri_fields.present?
|
235
|
+
if params[:multi_value_separator].present? and @separator_fields.present?
|
236
|
+
check_separator(row_number, row, params[:multi_value_separator])
|
237
|
+
else
|
238
|
+
alert_message = "No multi-value separator character was selected or no fields were configured. CSV Checker didn't check for valid separators."
|
239
|
+
if flash[:alert] and flash[:alert].exclude?(alert_message) # Only add this message once, rather than per line
|
240
|
+
flash[:alert] << alert_message
|
241
|
+
elsif flash[:alert].blank?
|
242
|
+
flash[:alert] = Array.wrap(alert_message)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
elsif row[:object_type] == "File"
|
246
|
+
check_file_path(row_number, row[:url])
|
247
|
+
else
|
248
|
+
@error_list[row_number] = { "object_type" => "No or unknown object type. Please give a valid type (e.g. GenericWork, File)." }
|
249
|
+
end
|
250
|
+
@error_list.delete_if { |key, value| value.blank? } # Data are valid, no need to print the row
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
def check_mounted_drive
|
255
|
+
drive_address = @path_to_drive
|
256
|
+
unless Dir.exist?(drive_address) and !Dir[drive_address].empty?
|
257
|
+
flash[:alert] = "CSV Checker can't find the mounted drive to check file paths, so some paths may be mislabelled as incorrect. Please contact the administrator or try again later."
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
def check_file_path(row_number, file_path)
|
262
|
+
if file_path.nil?
|
263
|
+
@error_list[row_number] = { "url" => "url is blank." }
|
264
|
+
elsif File.file?(file_path.gsub("file://", "")) == false
|
265
|
+
@error_list[row_number] = { "url" => "No file found at #{file_path}" }
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
def check_edtf(row_number, row)
|
270
|
+
edtf_fields = @edtf_fields
|
271
|
+
edtf_errors = edtf_fields.each_with_object({}) do |field, hash|
|
272
|
+
if Date.edtf(row[field]) == nil and row[field] != "unknown"
|
273
|
+
hash[field.to_s] = "Blank or not a valid EDTF date."
|
274
|
+
end
|
275
|
+
end
|
276
|
+
@error_list[row_number] = edtf_errors
|
277
|
+
end
|
278
|
+
|
279
|
+
# <Example: should be http://rightsstatements.org/vocab/etc. NOT https://rightsstatements.org/page/etc.
|
280
|
+
def check_uris(row_number, row)
|
281
|
+
uri_fields = @uri_fields
|
282
|
+
uri_errors = uri_fields.each_with_object({}) do |field, hash|
|
283
|
+
if row[field].include? "page"
|
284
|
+
hash[field.to_s] = "Links to page instead of URI. (e.g. https://rightsstatements.org/page/etc. instead of http://rightsstatements.org/vocab/etc.)"
|
285
|
+
end
|
286
|
+
end
|
287
|
+
@error_list[row_number].merge!(uri_errors)
|
288
|
+
end
|
209
289
|
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
290
|
+
# Check multi-value separators
|
291
|
+
def check_separator(row_number, row, character)
|
292
|
+
uri_fields = @separator_fields
|
293
|
+
separator_errors = uri_fields.each_with_object({}) do |field, hash|
|
294
|
+
value = row[field]
|
295
|
+
if value.present?
|
296
|
+
URI.extract(value).each { |uri| value.gsub!(uri, '') }
|
297
|
+
unless value.split("").all?(character) # Check if remaining characters are the correct separator
|
298
|
+
hash[field.to_s] = "May contain the wrong multi-value separator (i.e. not #{character})."
|
216
299
|
end
|
217
300
|
end
|
218
301
|
end
|
302
|
+
@error_list[row_number].merge!(separator_errors)
|
303
|
+
end
|
219
304
|
|
220
305
|
def default_page_title
|
221
306
|
'CSV Batch Uploader'
|
@@ -9,6 +9,12 @@ module CdmMigrator
|
|
9
9
|
#status_after, embargo_date, lease_date = nil, nil, nil
|
10
10
|
work.apply_depositor_metadata(user)
|
11
11
|
work.attributes = ingest_work.data
|
12
|
+
if ingest_work.data.has_key? 'downloadable'
|
13
|
+
# Convert string to boolean
|
14
|
+
work.downloadable = ActiveModel::Type::Boolean.new.cast(ingest_work.data['downloadable'])
|
15
|
+
elsif work.attributes.include? 'downloadable' # Set work to downloadable by default
|
16
|
+
work.downloadable = true
|
17
|
+
end
|
12
18
|
work.member_of_collections = [collection] if collection
|
13
19
|
work.admin_set = admin_set if admin_set
|
14
20
|
work.date_uploaded = DateTime.now
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<% provide :page_title, "CSV Checker" %>
|
2
|
+
|
3
|
+
<%#= flash[:alert].join("<br/>") if flash[:alert] %>
|
4
|
+
|
5
|
+
<h1>CSV Checker</h1>
|
6
|
+
|
7
|
+
<!-- <div class="row"> -->
|
8
|
+
<p>This tool validates CSV data and creates a table listing any errors.</p>
|
9
|
+
|
10
|
+
<a role="button" class="collapse-toggle collapsed csv-collapse-link" data-toggle="collapse" data-target="#errors-explanation" aria-expanded="false">
|
11
|
+
<span id="csv-collapse-link-text">Expand for more details</span>
|
12
|
+
</a>
|
13
|
+
<div class="collapse" id="errors-explanation">
|
14
|
+
<ul>
|
15
|
+
<li><strong>File paths: </strong>The url field contains a valid path to a file.</li>
|
16
|
+
<li><strong>Multi-value separator: </strong>Configured fields with URIs contain the right separator character (e.g. |).</li>
|
17
|
+
<% if @path_to_drive.present? %>
|
18
|
+
<li><strong>Mounted drive: </strong>A mounted directory (folder) exists and is not empty.</li>
|
19
|
+
<% end %>
|
20
|
+
<% if @edtf_fields.present? %>
|
21
|
+
<li><strong>EDTF dates: </strong>Configured fields contain valid <a href="https://www.loc.gov/standards/datetime/" target="_blank">EDTF</a> dates or "unknown."</li>
|
22
|
+
<% end %>
|
23
|
+
<% if @uri_fields.present? %>
|
24
|
+
<li><strong>Valid URIs ("page" vs "vocab"): </strong>Configured fields with URIs link to the "vocab" address rather than the "page" address. For example, rights_statement should be "http://rightsstatement.org/vocab/..." and not "https://rightsstatement.org/page/..."</li>
|
25
|
+
<% end %>
|
26
|
+
</ul>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
<%= form_tag(check_csv_path, remote: true, method: :post, multipart: true, id: "csv-form") do %>
|
32
|
+
<div class="input-group">
|
33
|
+
<%= label_tag :multi_value_separator %>
|
34
|
+
<%= text_field_tag(:multi_value_separator, @separator, size: 1) %>
|
35
|
+
<%= file_field_tag(:file, class: "form-control-file") %>
|
36
|
+
<%= hidden_field_tag :authenticity_token, value: form_authenticity_token %>
|
37
|
+
<%= button_tag(type: :submit, class: "btn btn-large btn-primary", style: "margin-top: 1em;") do %>
|
38
|
+
Check CSV
|
39
|
+
<% end %>
|
40
|
+
<% end %>
|
41
|
+
</div>
|
42
|
+
<!-- </div> -->
|
43
|
+
|
44
|
+
<div id="error_list" class="col-md-10 offset-md-1">
|
45
|
+
<%= render 'error_list' %>
|
46
|
+
</div>
|
data/config/routes.rb
CHANGED
@@ -9,8 +9,8 @@ Rails.application.routes.draw do
|
|
9
9
|
post '/cdm_migrator/export', to: 'cdm_migrator/csv#export', as: 'csv_export'
|
10
10
|
post '/cdm_migrator/update', to: 'cdm_migrator/csv#update', as: 'csv_update'
|
11
11
|
|
12
|
-
get '/cdm_migrator/
|
13
|
-
post '/cdm_migrator/
|
12
|
+
get '/cdm_migrator/csv_checker', to: 'cdm_migrator/csv#csv_checker', as: 'csv_checker'
|
13
|
+
post '/cdm_migrator/csv_checker', to: 'cdm_migrator/csv#csv_checker', as: 'check_csv'
|
14
14
|
|
15
15
|
get '/cdm_migrator/collection', to: 'cdm_migrator/cdm#collection', as: 'cdm_start'
|
16
16
|
post '/cdm_migrator/mappings/', to: 'cdm_migrator/cdm#mappings', as: 'cdm_mappings'
|
data/lib/cdm_migrator/version.rb
CHANGED
@@ -22,8 +22,8 @@ class CdmMigrator::InstallGenerator < Rails::Generators::Base
|
|
22
22
|
" <%= menu.nav_link(main_app.cdm_start_path) do %>\n" \
|
23
23
|
" <span class=\"fa fa-map\"></span> <span class=\"sidebar-action-text\"><%= t('CDM Mapping Tool') %></span>\n" \
|
24
24
|
" <% end %>\n" \
|
25
|
-
" <%= menu.nav_link(main_app.
|
26
|
-
" <span class=\"fa fa-check-circle\"></span><span>
|
25
|
+
" <%= menu.nav_link(main_app.csv_checker_path) do %>\n" \
|
26
|
+
" <span class=\"fa fa-check-circle\"></span><span>CSV Checker</span>\n" \
|
27
27
|
" <% end %>\n" \
|
28
28
|
" <%= menu.nav_link(main_app.csv_upload_path) do %>\n"\
|
29
29
|
" <span class=\"fa fa-angle-double-up\"></span> <span class=\"sidebar-action-text\"><%= t('CSV Batch Uploader') %></span>\n" \
|
@@ -67,5 +67,13 @@ class CdmMigrator::InstallGenerator < Rails::Generators::Base
|
|
67
67
|
def inject_content_dm_yml
|
68
68
|
copy_file("config/cdm_migrator.yml", "config/cdm_migrator.yml") unless File.file?("config/cdm_migrator.yml")
|
69
69
|
end
|
70
|
+
|
71
|
+
def inject_stylesheets
|
72
|
+
css_file_path = "app/assets/stylesheets/application.css"
|
73
|
+
copy_file("stylesheets/csv_checker.css", "app/assets/stylesheets/csv_checker.css") unless File.file?("app/assets/styelsheets/csv_checker.css")
|
74
|
+
insert_into_file css_file_path, :before => " *= require_self\n" do
|
75
|
+
" *= require csv_checker\n "
|
76
|
+
end
|
77
|
+
end
|
70
78
|
|
71
79
|
end
|
@@ -1,25 +1,38 @@
|
|
1
|
-
|
1
|
+
tenant_settings:
|
2
2
|
tenant1.institution.com:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
cdm_api:
|
4
|
+
url: 'http://your-content-dm-host'
|
5
|
+
port: 8080
|
6
|
+
type: 'front'
|
7
|
+
dirs:
|
8
|
+
dir1: '/dir1/path/goes/here'
|
9
|
+
dir2: '/dir2/path/goes/here'
|
9
10
|
tenant2.institution.com:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
cdm_api:
|
12
|
+
url: 'http://your-content-dm-host'
|
13
|
+
port: 8080
|
14
|
+
type: 'front'
|
15
|
+
dirs:
|
16
|
+
dir1: '/dir1/path/goes/here'
|
17
|
+
dir2: '/dir2/path/goes/here'
|
16
18
|
default:
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
cdm_api:
|
20
|
+
url: 'http://your-content-dm-host'
|
21
|
+
port: 8080
|
22
|
+
type: 'front'
|
23
|
+
dirs:
|
24
|
+
dir1: '/dir1/path/goes/here'
|
25
|
+
dir2: '/dir2/path/goes/here'
|
26
|
+
csv_checker:
|
27
|
+
edtf_fields:
|
28
|
+
# - date_created
|
29
|
+
valid_uri_fields:
|
30
|
+
# - rights_statement
|
31
|
+
# - genre
|
32
|
+
separator_fields:
|
33
|
+
# - subject
|
34
|
+
multi_value_separator: # '|'
|
35
|
+
path_to_drive: #'/mnt/drive'
|
23
36
|
default_fields:
|
24
37
|
- title
|
25
38
|
- creator
|
@@ -8,8 +8,8 @@
|
|
8
8
|
<span class="fa fa-map"></span> <span class="sidebar-action-text"><%= t('CDM Mapping Tool') %></span>
|
9
9
|
<% end %>
|
10
10
|
|
11
|
-
<%= menu.nav_link(main_app.
|
12
|
-
<span class="fa fa-check-circle"></span><span class="sidebar-action-text"><%= t('
|
11
|
+
<%= menu.nav_link(main_app.csv_checker_path) do %>
|
12
|
+
<span class="fa fa-check-circle"></span><span class="sidebar-action-text"><%= t('CSV Checker') %></span>
|
13
13
|
<% end %>
|
14
14
|
|
15
15
|
<%= menu.nav_link(main_app.csv_upload_path) do %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cdm_migrator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sephirothkod
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -81,6 +81,7 @@ files:
|
|
81
81
|
- app/assets/config/cdm_migrator_manifest.js
|
82
82
|
- app/assets/javascripts/cdm_migrator/application.js
|
83
83
|
- app/assets/stylesheets/cdm_migrator/application.css
|
84
|
+
- app/assets/stylesheets/cdm_migrator/csv_checker.css
|
84
85
|
- app/controllers/cdm_migrator/application_controller.rb
|
85
86
|
- app/controllers/cdm_migrator/cdm_controller.rb
|
86
87
|
- app/controllers/cdm_migrator/csv_controller.rb
|
@@ -103,8 +104,8 @@ files:
|
|
103
104
|
- app/views/cdm_migrator/csv/_path_list.html.erb
|
104
105
|
- app/views/cdm_migrator/csv/_results_pagination.html.erb
|
105
106
|
- app/views/cdm_migrator/csv/_tabs.html.erb
|
107
|
+
- app/views/cdm_migrator/csv/csv_checker.html.erb
|
106
108
|
- app/views/cdm_migrator/csv/edit.html.erb
|
107
|
-
- app/views/cdm_migrator/csv/file_path_checker.html.erb
|
108
109
|
- app/views/cdm_migrator/csv/index.html.erb
|
109
110
|
- app/views/cdm_migrator/csv/upload.html.erb
|
110
111
|
- app/views/layouts/cdm_migrator/application.html.erb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
<% provide :page_title, "File Path Checker" %>
|
2
|
-
|
3
|
-
<h1>File Path Checker</h1>
|
4
|
-
|
5
|
-
<!-- <div class="row"> -->
|
6
|
-
<p>This tool checks if a file exists at each url in a csv.</p>
|
7
|
-
<%= form_tag(check_file_paths_path, remote: true, method: :post, multipart: true, id: "csv-form") do %>
|
8
|
-
<div class="input-group">
|
9
|
-
<%= file_field_tag(:file, class: "form-control-file") %>
|
10
|
-
<%= hidden_field_tag :authenticity_token, value: form_authenticity_token %>
|
11
|
-
<%= button_tag(type: :submit, class: "btn btn-large btn-primary", style: "margin-top: 1em;") do %>
|
12
|
-
Check CSV
|
13
|
-
<% end %>
|
14
|
-
<% end %>
|
15
|
-
</div>
|
16
|
-
<!-- </div> -->
|
17
|
-
|
18
|
-
<div id="path_list" class="col-md-10 offset-md-1">
|
19
|
-
<%= render 'path_list' %>
|
20
|
-
</div>
|
21
|
-
|