changeset 3306:3af0909629a2

common (template): better json dumping: default method is set for json dumping (the `tojson` filter), if the object has a `json` attribute, it will be called, otherwise it is replaced by None, this avoids crash when rendering the template.
author Goffi <goffi@goffi.org>
date Fri, 19 Jun 2020 15:45:57 +0200
parents 04a7d77ed86f
children 9f0e28137cd0
files sat/tools/common/template.py
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/sat/tools/common/template.py	Fri Jun 19 15:39:32 2020 +0200
+++ b/sat/tools/common/template.py	Fri Jun 19 15:45:57 2020 +0200
@@ -451,6 +451,11 @@
 
         # policies
         self.env.policies["ext.i18n.trimmed"] = True
+        self.env.policies["json.dumps_kwargs"] = {
+            "sort_keys": True,
+            # if object can't be serialised, we use None
+            "default": lambda o: o.json() if hasattr(o, "json") else None
+        }
 
     def getFrontURL(self, template_data, path=None):
         """Give front URL (i.e. URL seen by end-user) of a path