Trap and report db errors during setup, i.e., factory creation
authorKarl O. Pinc <kop@karlpinc.com>
Thu, 29 Apr 2021 22:53:35 +0000 (17:53 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Thu, 29 Apr 2021 22:53:35 +0000 (17:53 -0500)
src/pgwui_core/core.py
src/pgwui_core/exceptions.py

index 31058b4d36ceb9f99d43e8053d473b384aa83c74..7764e9b2bdf71f7e641892eefc803d7933d75224 100644 (file)
@@ -1469,6 +1469,8 @@ class DBConnector(object):
             errors.extend(ex.errors)
         except core_ex.PGWUIError as ex:
             errors.append(ex)
+        except psycopg2.DatabaseError as ex:
+            errors.append(core_ex.DBSetupError(ex))
         else:
             try:
                 self.upload_data(processor, self.data, errors)
index 3b71ed8807d11a24f3dcab04497f7d716dfb77a3..3fe4e46d81a7c732531ae5986dfc0ca066b206d9 100644 (file)
@@ -54,6 +54,7 @@ class UploadError(PGWUIError):
         *  DBError
           * DBCommitError
           * DBDataLineError
+          * DBSetupError
       * DataLineError
         *  TooManyColsError
     '''
@@ -221,6 +222,11 @@ class DBDataLineError(DBError):
         self.data = udl.raw
 
 
+class DBSetupError(DBError):
+    def __init__(self, pgexc):
+        super().__init__(pgexc, "complete the application's setup")
+
+
 class DataLineError(UploadError):
     '''
     Module exceptions rasied while line-by-line processing the uploaded