return super().write_response(response)
-class SaveLine(DataLineProcessor):
+class SaveBulkLine(DataLineProcessor):
def __init__(self, ue, uh, insert_map):
'''
ue UploadEngine instance
'''
Upload a line of data into the db.
- bulk_data A UploadBulkData value. A tuple:
- (filepath, relation,
+ bulk_data A tuple:
+ (UploadBulkData instance,
thunk returning UploadDataLine instance)
'''
+ (data, thunk) = bulk_data
+ filepath = data.filepath
try:
- udl = bulk_data[2]()
+ udl = thunk()
self.cur.execute(
- self.insert_map[bulk_data[0]], udl.tuples)
+ self.insert_map[filepath], udl.tuples)
except (core_ex.DataLineError, core_ex.DBError) as exp:
- exp.color(map_description(bulk_data[0], bulk_data[1]),
- bulk_data[0], bulk_data[1])
+ relation = data.relation
+ exp.color(map_description(filepath, relation),
+ filepath, relation)
raise exp
except psycopg2.DatabaseError as exp:
+ relation = data.relation
myexp = core_ex.DBDataLineError(udl, exp)
- myexp.color(map_description(bulk_data[0], bulk_data[1]),
- bulk_data[0], bulk_data[1])
+ myexp.color(map_description(filepath, relation),
+ filepath, relation)
raise myexp
class UploadDir():
'''Uploaded archive directory
- It is iterable, consisting of SaveLine instances
+ It is iterable, consisting of SaveBulkLine instances
'''
uf = attr.ib()
dentry = attr.ib()
def __iter__(self):
for data in self.filedata:
- filepath = data.filepath
- relation = data.relation
for thunk in data:
- def colored_thunk():
- try:
- return thunk()
- except core_ex.DataLineError as ex:
- ex.color(map_description(filepath, relation),
- filepath, relation)
- raise ex
- yield lambda: (filepath, relation, colored_thunk)
+ yield lambda: (data, thunk)
def fileinfo(self):
for fileinfo in self.filedata:
self.data.open(self.uf, self.zip_root, self.map_file)
- return SaveLine(self.ue, self, self.insert_map())
+ return SaveBulkLine(self.ue, self, self.insert_map())
def stats(self):
return self.data.stats()