bulk_ops 0.1.17 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bulk_ops/error.rb +1 -1
- data/lib/bulk_ops/operation.rb +4 -3
- data/lib/bulk_ops/parser.rb +7 -12
- data/lib/bulk_ops/verification.rb +13 -13
- data/lib/bulk_ops/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a60889c5673952113a76b07c00b17b6ac5f99a4a2a3ac1099b3e2cb58ac04fd7
|
4
|
+
data.tar.gz: f7e2488b18b09092e90ef1fb3dad38e460d75bdfb355942065be98e28e743008
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df3fc8ea76aae33515e73202d16a73ddbd86a3ae3c7a73245ec303c7599751b8c8e9961c1deee5971339cebd5bb9cd6ece60a962bebc6747c55244002a212326
|
7
|
+
data.tar.gz: cc1f2e6360da271a4203c5a6ccc6c67c793f7c5f5ce13b671ad79532c47a9044e76db9131af18090885b06b17aec9960a828db7bb2417a1d82a9afc6df90c6ba
|
data/lib/bulk_ops/error.rb
CHANGED
@@ -118,7 +118,7 @@ class BulkOps::Error
|
|
118
118
|
end
|
119
119
|
|
120
120
|
when :bad_object_reference
|
121
|
-
message = "\n-- Error: bad object reference --\
|
121
|
+
message = "\n-- Error: bad object reference --\n"
|
122
122
|
message += "We enountered #{errors.count} problems resolving object references.\n"
|
123
123
|
if errors.count < max_error
|
124
124
|
message += "The row numbers with problems were:\n"
|
data/lib/bulk_ops/operation.rb
CHANGED
@@ -97,7 +97,7 @@ module BulkOps
|
|
97
97
|
# make sure the work proxies we just created are loaded in memory
|
98
98
|
reload
|
99
99
|
#loop through the work proxies to create a job for each work
|
100
|
-
@metadata.each_with_index do |values,row_number|
|
100
|
+
@metadata.dup.each_with_index do |values,row_number|
|
101
101
|
proxy = work_proxies.find_by(row_number: row_number)
|
102
102
|
proxy.update(message: "interpreted at #{DateTime.now.strftime("%d/%m/%Y %H:%M")} " + proxy.message)
|
103
103
|
data = BulkOps::Parser.new(proxy, @metadata).interpret_data(raw_row: values)
|
@@ -240,7 +240,8 @@ module BulkOps
|
|
240
240
|
end
|
241
241
|
|
242
242
|
def get_spreadsheet return_headers: false
|
243
|
-
|
243
|
+
branch = ((running? || complete?) ? "master" : nil)
|
244
|
+
git.load_metadata return_headers: return_headers, branch: branch
|
244
245
|
end
|
245
246
|
|
246
247
|
def spreadsheet_count
|
@@ -275,7 +276,7 @@ module BulkOps
|
|
275
276
|
end
|
276
277
|
|
277
278
|
def running?
|
278
|
-
return (
|
279
|
+
return (['running','finishing'].include?(stage))
|
279
280
|
end
|
280
281
|
|
281
282
|
def complete?
|
data/lib/bulk_ops/parser.rb
CHANGED
@@ -9,9 +9,9 @@ class BulkOps::Parser
|
|
9
9
|
return false unless metadata[row_number].present?
|
10
10
|
# If there are any valid fields other than relationship or file fields, it is a work
|
11
11
|
metadata[row_number].each do |field, value|
|
12
|
-
next if is_file_field?(field)
|
13
|
-
next if ["parent", "order"].include(normalize_relationship_field_name(field))
|
14
|
-
next if ["title","label"].include(field.downcase.strip)
|
12
|
+
next if BulkOps::Verification.is_file_field?(field)
|
13
|
+
next if ["parent", "order"].include?(normalize_relationship_field_name(field))
|
14
|
+
next if ["title","label"].include?(field.downcase.strip)
|
15
15
|
return false
|
16
16
|
end
|
17
17
|
return true
|
@@ -173,7 +173,7 @@ class BulkOps::Parser
|
|
173
173
|
next if field == value
|
174
174
|
|
175
175
|
# Check if this is a file field, and whether we are removing or adding a file
|
176
|
-
next unless (action = is_file_field?(field))
|
176
|
+
next unless (action = BulkOps::Verification.is_file_field?(field))
|
177
177
|
|
178
178
|
# Move on if this field is the name of another property (e.g. masterFilename)
|
179
179
|
next if find_field_name(field)
|
@@ -203,7 +203,7 @@ class BulkOps::Parser
|
|
203
203
|
child_row.each do |field,value|
|
204
204
|
next if value.blank?
|
205
205
|
title = value if ["title","label"].include?(field.downcase.strip)
|
206
|
-
if is_file_field?(field)
|
206
|
+
if BulkOps::Verification.is_file_field?(field)
|
207
207
|
operation.get_file_paths(value).each do |filepath|
|
208
208
|
uploaded_file = Hyrax::UploadedFile.create(file: File.open(filepath), user: operation.user)
|
209
209
|
end
|
@@ -269,7 +269,7 @@ class BulkOps::Parser
|
|
269
269
|
relationship_type = field
|
270
270
|
end
|
271
271
|
|
272
|
-
relationship_type = normalize_relationship_field_name(relationship_type)
|
272
|
+
relationship_type = self.class.normalize_relationship_field_name(relationship_type)
|
273
273
|
case relationship_type
|
274
274
|
when "order"
|
275
275
|
# If the field specifies the object's order among siblings
|
@@ -312,7 +312,7 @@ class BulkOps::Parser
|
|
312
312
|
@raw_row = row
|
313
313
|
end
|
314
314
|
|
315
|
-
def normalize_relationship_field_name field
|
315
|
+
def self.normalize_relationship_field_name field
|
316
316
|
normfield = field.downcase.parameterize.gsub(/[_\s-]/,'')
|
317
317
|
BulkOps::RELATIONSHIP_FIELDS.find{|rel_field| normfield == rel_field }
|
318
318
|
end
|
@@ -459,11 +459,6 @@ class BulkOps::Parser
|
|
459
459
|
BulkOps::DeleteFileSetJob.perform_later(fileset_id, operation.user.email )
|
460
460
|
end
|
461
461
|
|
462
|
-
|
463
|
-
def is_file_field? field
|
464
|
-
operation.is_file_field? field
|
465
|
-
end
|
466
|
-
|
467
462
|
def record_exists? id
|
468
463
|
operation.record_exists? id
|
469
464
|
end
|
@@ -31,9 +31,9 @@ module BulkOps
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
def is_file_field?(fieldname)
|
34
|
+
def self.is_file_field?(fieldname)
|
35
35
|
return false if fieldname.blank?
|
36
|
-
return false if
|
36
|
+
return false if ScoobySnacks::METADATA_SCHEMA.get_field(fieldname)
|
37
37
|
field_parts = fieldname.underscore.humanize.downcase.gsub(/[-_]/,' ').split(" ")
|
38
38
|
return false unless field_parts.any?{ |field_type| BulkOps::FILE_FIELDS.include?(field_type) }
|
39
39
|
return "remove" if field_parts.any?{ |field_type| ['remove','delete'].include?(field_type) }
|
@@ -46,7 +46,7 @@ module BulkOps
|
|
46
46
|
name.gsub!(/[_\s-]?[lL]abel$/,'')
|
47
47
|
name.gsub!(/^[rR]emove[_\s-]?/,'')
|
48
48
|
name.gsub!(/^[dD]elete[_\s-]?/,'')
|
49
|
-
possible_fields = (Work.attribute_names + schema.all_field_names).uniq
|
49
|
+
possible_fields = ((Work.attribute_names || []) + schema.all_field_names).uniq
|
50
50
|
matching_fields = possible_fields.select{|pfield| pfield.gsub(/[_\s-]/,'').parameterize == name.gsub(/[_\s-]/,'').parameterize }
|
51
51
|
return false if matching_fields.blank?
|
52
52
|
# raise Exception "Ambiguous metadata fields!" if matching_fields.uniq.count > 1
|
@@ -72,7 +72,7 @@ module BulkOps
|
|
72
72
|
def verify_files
|
73
73
|
file_errors = []
|
74
74
|
get_spreadsheet.each_with_index do |row, row_num|
|
75
|
-
file_fields = row.select { |field, value| is_file_field?(field) }
|
75
|
+
file_fields = row.select { |field, value| BulkOps::Verification.is_file_field?(field) }
|
76
76
|
file_fields.each do |column_name, filestring|
|
77
77
|
next if filestring.blank? or column_name == filestring
|
78
78
|
get_file_paths(filestring).each do |filepath|
|
@@ -103,7 +103,8 @@ module BulkOps
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def downcase_first_letter(str)
|
106
|
-
|
106
|
+
return nil unless str.present?
|
107
|
+
(str[0].downcase || "") + str[1..-1]
|
107
108
|
end
|
108
109
|
|
109
110
|
# Make sure the headers in the spreadsheet are matching to properties
|
@@ -188,7 +189,7 @@ module BulkOps
|
|
188
189
|
def verify_internal_references
|
189
190
|
# TODO
|
190
191
|
# This is sketchy. Redo it.
|
191
|
-
(metadata = get_spreadsheet).
|
192
|
+
(metadata = get_spreadsheet).each_with_index do |row,row_num|
|
192
193
|
ref_id = get_ref_id(row)
|
193
194
|
BulkOps::RELATIONSHIP_COLUMNS.each do |relationship|
|
194
195
|
next unless (obj_id = row[relationship])
|
@@ -197,16 +198,15 @@ module BulkOps
|
|
197
198
|
obj_id = split[1]
|
198
199
|
end
|
199
200
|
|
200
|
-
if ref_id == "row" || (ref_id
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
@verification_errors << BulkOps::Error.new({type: :bad_object_reference, object_id: obj_id, row_number: row_num + ROW_OFFSET})
|
201
|
+
if ref_id == "row" || (ref_id.include?("row") && obj_id.is_a?(Integer))
|
202
|
+
# This is a row number reference. It should be an integer or a string including "prev"
|
203
|
+
unless obj_id.present? && ((obj_id =~ /\A[-+]?[0-9]+\z/) or (obj_id.strip.downcase.include?("prev") ))
|
204
|
+
@verification_errors << BulkOps::Error.new({type: :bad_object_reference, object_id: obj_id, row_number: row_num + BulkOps::ROW_OFFSET})
|
205
205
|
end
|
206
|
-
elsif ref_id
|
206
|
+
elsif ref_id.include?("id")
|
207
207
|
# This is a hydra id reference. It should correspond to an object already in the repo
|
208
208
|
unless record_exists?(obj_id)
|
209
|
-
@verification_errors << BulkOps::Error.new({type: :bad_object_reference, object_id: obj_id, row_number: row_num+ROW_OFFSET})
|
209
|
+
@verification_errors << BulkOps::Error.new({type: :bad_object_reference, object_id: obj_id, row_number: row_num + BulkOps:: ROW_OFFSET})
|
210
210
|
end
|
211
211
|
end
|
212
212
|
end
|
data/lib/bulk_ops/version.rb
CHANGED