From 8cfd0eb692550d4f8aefd4211123bcb31bbfce63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 20 Dec 2017 19:26:44 +0100 Subject: [PATCH] Use JSON canonical form for Dict value It allows to make equality comparison. issue7013 review39041002 --- CHANGELOG | 1 + trytond/model/fields/dict.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 585e9c012e..f03487a078 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Use JSON canonical form for Dict value * Remove rules on user * Add monetary formatting to language * Add exceptional parent language diff --git a/trytond/model/fields/dict.py b/trytond/model/fields/dict.py index 6490f7739c..1f61d26e33 100644 --- a/trytond/model/fields/dict.py +++ b/trytond/model/fields/dict.py @@ -37,7 +37,9 @@ class Dict(Field): if value is None: return None assert isinstance(value, dict) - return json.dumps(value, cls=JSONEncoder, separators=(',', ':')) + # Use canonical form + return json.dumps( + value, cls=JSONEncoder, separators=(',', ':'), sort_keys=True) def translated(self, name=None, type_='values'): "Return a descriptor for the translated value of the field"