bulk_ops 0.1.18 → 0.1.19
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/lib/bulk_ops/operation.rb +1 -1
- data/lib/bulk_ops/parser.rb +7 -26
- data/lib/bulk_ops/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 980d5fec0bcc94d2199356f379adeb0cee99a748b159a5b7d2934e26bdf53c9d
|
4
|
+
data.tar.gz: c4c6ef9e463d35fd408ac6c477a47bee55eb7833c374269e4bc3a98d881713b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9511dad25f5d1f489ad08415b7750fd2264d214b057ea9b2af0fbd2ee83998cbb25f631b8e1432b958bd0a90c85a4507cbc363e21316e981090aa6b42697215
|
7
|
+
data.tar.gz: 90df61d91db0671690c2fc8199d75feadea833c5ee23e8e4778c855f7a36297cec3ea191741b33d1ad1409e4d43020888fc37f037280de7f0578b9cda285159d
|
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.
|
100
|
+
@metadata.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)
|
data/lib/bulk_ops/parser.rb
CHANGED
@@ -20,7 +20,7 @@ class BulkOps::Parser
|
|
20
20
|
def initialize prx, metadata_sheet=nil
|
21
21
|
@proxy = prx
|
22
22
|
@raw_data = (metadata_sheet || proxy.operation.metadata)
|
23
|
-
@raw_row = @raw_data[@proxy.row_number]
|
23
|
+
@raw_row = @raw_data[@proxy.row_number]
|
24
24
|
@metadata = {}
|
25
25
|
@parsing_errors = []
|
26
26
|
end
|
@@ -29,13 +29,13 @@ class BulkOps::Parser
|
|
29
29
|
@raw_row = raw_row if raw_row.present?
|
30
30
|
@proxy = proxy if proxy.present?
|
31
31
|
@raw_data = raw_data if raw_data.present?
|
32
|
+
disambiguate_columns
|
32
33
|
setAdminSet
|
33
34
|
#The order here matters a little: interpreting the relationship fields specifies containing collections,
|
34
35
|
# which may have opinions about whether we should inherit metadata from parent works
|
35
36
|
interpret_relationship_fields
|
36
37
|
setMetadataInheritance
|
37
38
|
interpret_option_fields
|
38
|
-
disambiguate_columns
|
39
39
|
interpret_file_fields
|
40
40
|
interpret_controlled_fields
|
41
41
|
interpret_scalar_fields
|
@@ -54,8 +54,7 @@ class BulkOps::Parser
|
|
54
54
|
# separate values in identical columns using the separator
|
55
55
|
row[header] = (Array(row[header]) << value).join(BulkOps::SEPARATOR)
|
56
56
|
end
|
57
|
-
|
58
|
-
return row
|
57
|
+
@raw_row = row
|
59
58
|
end
|
60
59
|
|
61
60
|
def interpret_controlled_fields
|
@@ -67,7 +66,6 @@ class BulkOps::Parser
|
|
67
66
|
# This hash is populated with relevant data as we loop through the fields
|
68
67
|
controlled_data = {}
|
69
68
|
|
70
|
-
row = @raw_row.dup
|
71
69
|
@raw_row.each do |field_name, value|
|
72
70
|
next if value.blank? or field_name.blank?
|
73
71
|
field_name = field_name.to_s
|
@@ -122,10 +120,8 @@ class BulkOps::Parser
|
|
122
120
|
row_number: row_number) unless value_id
|
123
121
|
end
|
124
122
|
controlled_data[field_name_norm] << {id: value_id, remove: field_name.downcase.starts_with?("remove")}
|
125
|
-
row.delete(field_name)
|
126
123
|
end
|
127
124
|
end
|
128
|
-
@raw_row = row
|
129
125
|
|
130
126
|
# Actually add all the data
|
131
127
|
controlled_data.each do |property_name, data|
|
@@ -139,8 +135,7 @@ class BulkOps::Parser
|
|
139
135
|
end
|
140
136
|
|
141
137
|
def interpret_scalar_fields
|
142
|
-
|
143
|
-
@raw_row.each do |field, values|
|
138
|
+
@raw_row.each do |field, values|
|
144
139
|
next if values.blank? or field.nil? or field == values
|
145
140
|
# get the field name, if this column is a metadata field
|
146
141
|
next unless field_name = find_field_name(field.to_s)
|
@@ -152,11 +147,9 @@ class BulkOps::Parser
|
|
152
147
|
value = value.strip.encode('utf-8', :invalid => :replace, :undef => :replace, :replace => '_') unless value.blank?
|
153
148
|
value = unescape_csv(value)
|
154
149
|
(@metadata[field_name] ||= []) << value
|
155
|
-
|
156
|
-
end
|
150
|
+
end
|
157
151
|
end
|
158
|
-
|
159
|
-
end
|
152
|
+
end
|
160
153
|
|
161
154
|
def interpret_file_fields
|
162
155
|
# This method handles file additions and deletions from the spreadsheet
|
@@ -165,7 +158,6 @@ class BulkOps::Parser
|
|
165
158
|
# by the BulkOps::Operation.
|
166
159
|
#
|
167
160
|
|
168
|
-
row = @raw_row.dup
|
169
161
|
@raw_row.each do |field, value|
|
170
162
|
next if value.blank? or field.blank?
|
171
163
|
field = field.to_s
|
@@ -187,7 +179,6 @@ class BulkOps::Parser
|
|
187
179
|
begin
|
188
180
|
uploaded_file = Hyrax::UploadedFile.create(file: File.open(filepath), user: operation.user)
|
189
181
|
(@metadata[:uploaded_files] ||= []) << uploaded_file.id unless uploaded_file.id.nil?
|
190
|
-
row.delete(field)
|
191
182
|
rescue Exception => e
|
192
183
|
report_error(:upload_error,
|
193
184
|
message: "Error opening file: #{ filepath } -- #{e}",
|
@@ -213,11 +204,9 @@ class BulkOps::Parser
|
|
213
204
|
end
|
214
205
|
|
215
206
|
end
|
216
|
-
@raw_row = row
|
217
207
|
end
|
218
208
|
|
219
209
|
def interpret_option_fields
|
220
|
-
row = @raw_row.dup
|
221
210
|
@raw_row.each do |field,value|
|
222
211
|
next if value.blank? or field.blank?
|
223
212
|
field = field.to_s
|
@@ -226,11 +215,10 @@ class BulkOps::Parser
|
|
226
215
|
normfield = field.downcase.parameterize.gsub(/[_\s-]/,'')
|
227
216
|
if ["visibility", "public"].include?(normfield)
|
228
217
|
@proxy.update(visibility: format_visibility(value))
|
229
|
-
|
218
|
+
|
230
219
|
end
|
231
220
|
if ["worktype","model","type"].include?(normfield)
|
232
221
|
@proxy.update(work_type: format_worktype(value) )
|
233
|
-
row.delete(field)
|
234
222
|
end
|
235
223
|
if ["referenceidentifier",
|
236
224
|
"referenceid",
|
@@ -245,14 +233,11 @@ class BulkOps::Parser
|
|
245
233
|
"relid",
|
246
234
|
"relidtype"].include?(normfield)
|
247
235
|
@proxy.update(reference_identifier: format_reference_id(value))
|
248
|
-
row.delete(field)
|
249
236
|
end
|
250
237
|
end
|
251
|
-
@raw_row = row
|
252
238
|
end
|
253
239
|
|
254
240
|
def interpret_relationship_fields
|
255
|
-
row = @raw_row.dup
|
256
241
|
@raw_row.each do |field,value|
|
257
242
|
next if value.blank? or field.blank?
|
258
243
|
field = field.to_s
|
@@ -274,14 +259,12 @@ class BulkOps::Parser
|
|
274
259
|
when "order"
|
275
260
|
# If the field specifies the object's order among siblings
|
276
261
|
@proxy.update(order: value.to_f)
|
277
|
-
row.delete(field)
|
278
262
|
next
|
279
263
|
when "collection"
|
280
264
|
# If the field specifies the name or ID of a collection,
|
281
265
|
# find or create the collection and update the metadata to match
|
282
266
|
col = find_or_create_collection(value)
|
283
267
|
( @metadata[:member_of_collection_ids] ||= [] ) << col.id if col
|
284
|
-
row.delete field
|
285
268
|
next
|
286
269
|
when "parent", "child"
|
287
270
|
|
@@ -306,10 +289,8 @@ class BulkOps::Parser
|
|
306
289
|
end
|
307
290
|
end
|
308
291
|
BulkOps::Relationship.create(relationship_parameters)
|
309
|
-
row.delete field
|
310
292
|
end
|
311
293
|
end
|
312
|
-
@raw_row = row
|
313
294
|
end
|
314
295
|
|
315
296
|
def self.normalize_relationship_field_name field
|
data/lib/bulk_ops/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bulk_ops
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ned Henry, UCSC Library Digital Initiatives
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|