Support tab-delimited download format
authorKarl O. Pinc <kop@karlpinc.com>
Mon, 30 Sep 2024 01:08:42 +0000 (20:08 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Mon, 30 Sep 2024 01:08:42 +0000 (20:08 -0500)
src/pgwui_sql/views/sql.py

index fc02e53da4eb715126277174a6e7db661f7c140a..fa8d336cdcd38dc7b79153df15617ec4e3ab6786 100644 (file)
@@ -269,11 +269,14 @@ class SQLResultsHandler(pgwui_core.core.SessionDBHandler):
 
     def make_csv_writer(self):
         vinfo = sys.version_info
-        if vinfo.major >= 3 and vinfo.minor >= 12:
-            quoting = csv.QUOTE_STRINGS
+        if self.uf.download_fmt == CSV:
+            if vinfo.major >= 3 and vinfo.minor >= 12:
+                quoting = csv.QUOTE_STRINGS
+            else:
+                quoting = csv.QUOTE_NONNUMERIC
+            return csv.writer(self.tfile, quoting=quoting)
         else:
-            quoting = csv.QUOTE_NONNUMERIC
-        return csv.writer(self.tfile, quoting=quoting)
+            return csv.writer(self.tfile, dialect=csv.excel_tab)
 
     def make_download(self, cur):
         # Optimized to minimize RAM usage
@@ -394,8 +397,12 @@ def sql_view(request):
             pmd_response.content_type = 'text/csv'
         else:
             pmd_response.content_type = 'text/plain'
+        if uh.uf['download_fmt'] == CSV:
+            suffix = 'csv'
+        else:
+            suffix = 'txt'  # Tab delimited
         pmd_response.content_disposition = \
-            f'attachment; filename={response["dl_filename"]}.csv'
+            f'attachment; filename={response["dl_filename"]}.{suffix}'
 
         pmd_response.app_iter = codecs.iterencode(uh.tfile, 'utf_8')