From 233c74c637e206c04e5683d45d8acb61039bea01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Miguel=20Neves?= Date: Mon, 17 Jun 2019 10:43:36 +0100 Subject: [PATCH 1/4] use configured json serializer --- tgext/debugbar/sections/sqla.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tgext/debugbar/sections/sqla.py b/tgext/debugbar/sections/sqla.py index 5096f4f..f9edbb5 100644 --- a/tgext/debugbar/sections/sqla.py +++ b/tgext/debugbar/sections/sqla.py @@ -6,6 +6,7 @@ import logging import datetime +from tg import config from tg._compat import unicode_text try: @@ -19,7 +20,7 @@ def default(self, obj): return str(obj) else: return json.JSONEncoder.default(self, obj) -json_encoder = ExtendedJSONEncoder() +json_encoder = ExtendedJSONEncoder() if "sqlalchemy.json_serializer" not in config else config["sqlalchemy.json_serializer"] import tg from tg import config, request, app_globals From 24bcae9bfa1810d6282ddd17454d03b2d867230a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Miguel=20Neves?= Date: Mon, 17 Jun 2019 12:08:05 +0100 Subject: [PATCH 2/4] working version --- tgext/debugbar/sections/sqla.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tgext/debugbar/sections/sqla.py b/tgext/debugbar/sections/sqla.py index f9edbb5..af330ae 100644 --- a/tgext/debugbar/sections/sqla.py +++ b/tgext/debugbar/sections/sqla.py @@ -6,7 +6,6 @@ import logging import datetime -from tg import config from tg._compat import unicode_text try: @@ -20,7 +19,7 @@ def default(self, obj): return str(obj) else: return json.JSONEncoder.default(self, obj) -json_encoder = ExtendedJSONEncoder() if "sqlalchemy.json_serializer" not in config else config["sqlalchemy.json_serializer"] +json_encoder = lambda x: json.dumps(x, cls=ExtendedJSONEncoder) import tg from tg import config, request, app_globals @@ -90,6 +89,9 @@ def title(self): return _('SQLAlchemy') def _gather_queries(self): + if "sqlalchemy.json_serializer" in config: + json_encoder = config["sqlalchemy.json_serializer"] + queries = getattr(request, 'tgdb_sqla_queries', []) if not queries: return [] @@ -99,7 +101,7 @@ def _gather_queries(self): is_select = query['statement'].strip().lower().startswith('select') params = '' try: - params = json_encoder.encode(query['parameters']) + params = json_encoder(query['parameters']) except TypeError: return 'Unable to serialize parameters of the query' From 9f5913929f51188502ed387edcc57d0279ca6c0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Miguel=20Neves?= Date: Mon, 17 Jun 2019 12:17:30 +0100 Subject: [PATCH 3/4] attempt at cleaner version --- tgext/debugbar/sections/sqla.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tgext/debugbar/sections/sqla.py b/tgext/debugbar/sections/sqla.py index af330ae..eb2ab31 100644 --- a/tgext/debugbar/sections/sqla.py +++ b/tgext/debugbar/sections/sqla.py @@ -69,6 +69,9 @@ def _after_cursor_execute(conn, cursor, stmt, params, context, execmany): def enable_sqlalchemy(*args, **kw): if has_sqla: + if "sqlalchemy.json_serializer" in config: + json_encoder = config["sqlalchemy.json_serializer"] + event.listen(Engine, "before_cursor_execute", _before_cursor_execute) event.listen(Engine, "after_cursor_execute", _after_cursor_execute) @@ -89,9 +92,6 @@ def title(self): return _('SQLAlchemy') def _gather_queries(self): - if "sqlalchemy.json_serializer" in config: - json_encoder = config["sqlalchemy.json_serializer"] - queries = getattr(request, 'tgdb_sqla_queries', []) if not queries: return [] From 89a4ef32245760e302811482b0ea4493d14393cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Miguel=20Neves?= Date: Mon, 17 Jun 2019 13:10:58 +0100 Subject: [PATCH 4/4] Revert "attempt at cleaner version" This reverts commit 9f5913929f51188502ed387edcc57d0279ca6c0e. --- tgext/debugbar/sections/sqla.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tgext/debugbar/sections/sqla.py b/tgext/debugbar/sections/sqla.py index eb2ab31..af330ae 100644 --- a/tgext/debugbar/sections/sqla.py +++ b/tgext/debugbar/sections/sqla.py @@ -69,9 +69,6 @@ def _after_cursor_execute(conn, cursor, stmt, params, context, execmany): def enable_sqlalchemy(*args, **kw): if has_sqla: - if "sqlalchemy.json_serializer" in config: - json_encoder = config["sqlalchemy.json_serializer"] - event.listen(Engine, "before_cursor_execute", _before_cursor_execute) event.listen(Engine, "after_cursor_execute", _after_cursor_execute) @@ -92,6 +89,9 @@ def title(self): return _('SQLAlchemy') def _gather_queries(self): + if "sqlalchemy.json_serializer" in config: + json_encoder = config["sqlalchemy.json_serializer"] + queries = getattr(request, 'tgdb_sqla_queries', []) if not queries: return []