Add feature to upload missing column values as NULL
authorKarl O. Pinc <kop@karlpinc.com>
Thu, 10 Oct 2024 18:25:14 +0000 (13:25 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Thu, 10 Oct 2024 18:25:14 +0000 (13:25 -0500)
src/pgwui_core/forms.py

index 204e7d822903b4ace515b82f0848365d3e65e102..286efd99c06fddb5ce87d43b030dc24e3d6a37a3 100644 (file)
@@ -68,6 +68,7 @@ class UploadFileInitialPost(UserInitialPost):
     upload_fmt = attrs.field(default=CSV)
     trim_upload = attrs.field(default=True)
     literal_col_headings = attrs.field(default=False)
+    add_missing_columns = attrs.field(default=False)
     datafile = attrs.field(default='')
 
 
@@ -118,6 +119,7 @@ class UploadFileWTForm(AuthWTForm):
     datafile = FileField('File with CSV or Tab delimited Data:')
     trim_upload = BooleanField('Trim Leading/Trailing Spaces:')
     literal_col_headings = BooleanField('Literal Uploaded Column Headings:')
+    add_missing_columns = BooleanField('Add Missing Columns:')
 
 
 class UploadNullFileWTForm(UploadFileWTForm):
@@ -431,6 +433,7 @@ class UploadFileForm(AuthLoadedForm):
         self['upload_fmt'] = self._form.upload_fmt.data
         self['trim_upload'] = self._form.trim_upload.data
         self['literal_col_headings'] = self._form.literal_col_headings.data
+        self['add_missing_columns'] = self._form.add_missing_columns.data
 
         # Other POST variables involving a file
         post = self.uh.request.POST
@@ -468,6 +471,11 @@ class UploadFileForm(AuthLoadedForm):
         else:
             literal_col_headings_checked = UNCHECKED
 
+        if self['add_missing_columns']:
+            add_missing_columns_checked = CHECKED
+        else:
+            add_missing_columns_checked = UNCHECKED
+
         response = super().write(result, errors)
         # Although we read-in db_changed, we do not write it because
         # it, like last_key, is computed.
@@ -478,6 +486,7 @@ class UploadFileForm(AuthLoadedForm):
         response['csv_checked'] = csv_checked
         response['tab_checked'] = tab_checked
         response['literal_col_headings'] = literal_col_headings_checked
+        response['add_missing_columns'] = add_missing_columns_checked
         return response