From 38c1ee896f28990476202d89fe921ccf860885c1 Mon Sep 17 00:00:00 2001 From: Eric BREHAULT Date: Thu, 17 Dec 2015 16:54:04 +0100 Subject: [PATCH] more robust logger --- src/rapido/plone/browser/views.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/rapido/plone/browser/views.py b/src/rapido/plone/browser/views.py index 99b8004..b5e9271 100644 --- a/src/rapido/plone/browser/views.py +++ b/src/rapido/plone/browser/views.py @@ -11,6 +11,16 @@ from rapido.plone.app import get_app +class PythonObjectEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance( + obj, + (list, dict, str, unicode, int, float, bool, type(None)) + ): + return json.JSONEncoder.default(self, obj) + return {'_not_serializable': str(obj)} + + class RapidoView(BrowserView): implements(IPublishTraverse) @@ -99,7 +109,7 @@ def __call__(self): if len(self.path) == 2 and self.path[1] == '_log': messages = self.get_app_messages() self.request.response.setHeader('content-type', 'application/json') - return json.dumps(messages) + return json.dumps(messages, cls=PythonObjectEncoder) if "application/json" in self.request.getHeader('Accept', ''): result = self.json()