Simplify what's passed to the DataLineProcessor; remove extra coloring
authorKarl O. Pinc <kop@karlpinc.com>
Wed, 13 Jan 2021 20:14:09 +0000 (14:14 -0600)
committerKarl O. Pinc <kop@karlpinc.com>
Wed, 13 Jan 2021 21:49:35 +0000 (15:49 -0600)
src/pgwui_bulk_upload/views/bulk_upload.py

index f753251821e9cea9abe3e4b8a9a074cec52956a1..385eb0c4494b450e7e0e9e7350ebf30be1f4df1f 100644 (file)
@@ -88,7 +88,7 @@ class BulkUploadForm(UploadNullMixin, UploadDoubleFileForm):
         return super().write_response(response)
 
 
-class SaveLine(DataLineProcessor):
+class SaveBulkLine(DataLineProcessor):
     def __init__(self, ue, uh, insert_map):
         '''
         ue             UploadEngine instance
@@ -103,22 +103,26 @@ class SaveLine(DataLineProcessor):
         '''
         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
 
 
@@ -143,7 +147,7 @@ class UploadBulkData(UploadData):
 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()
@@ -324,17 +328,8 @@ class UploadDir():
 
     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:
@@ -547,7 +542,7 @@ class BulkTableUploadHandler(BaseTableUploadHandler):
 
         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()