Set client-side connection encoding
authorKarl O. Pinc <kop@karlpinc.com>
Fri, 23 Feb 2024 20:29:53 +0000 (14:29 -0600)
committerKarl O. Pinc <kop@karlpinc.com>
Fri, 23 Feb 2024 20:29:53 +0000 (14:29 -0600)
src/pgwui_core/core.py

index 89836e7278e515bfa7f7b3a1c8162d7f24b5751b..c66940dfcb35e4bbf7d9d0af3ccbc468ba97cef7 100644 (file)
@@ -1549,6 +1549,18 @@ class DBConnector(object):
         conn.close()
         return encoding
 
+    def _get_conn_kwargs(self, forced_client_encoding):
+        '''
+        Return a dict with additional conninfo values from the settings.
+        '''
+        registry = self.uh.request.registry
+        if forced_client_encoding is not None:
+            return {'client_encoding': forced_client_encoding}
+        client_encoding = registry.settings['pgwui'].get('client_encoding')
+        if client_encoding == '':
+            return {}
+        return {'client_encoding': client_encoding}
+
     def call_with_connection(self, func):
         '''
         Validate input, connect to the db, and do something with
@@ -1600,6 +1612,8 @@ class DBConnector(object):
                     user=self.user,
                     password=self.password,
                     host=registry.settings['pgwui'].get('pg_host'),
+                    port=registry.settings['pgwui'].get('pg_port'),
+                    **self._get_conn_kwargs(client_encoding))
             except psycopg.OperationalError:
                 errors = [self.authfailerror_factory()]
                 havecreds = False