From 64421ff64f01bec72501d2f01854f3bb4c30fd52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 15 Mar 2014 10:36:20 +0100 Subject: [PATCH] Manage microseconds in JSON-RPC and XML-RPC review3551002 --- CHANGELOG | 1 + trytond/protocols/jsonrpc.py | 7 +++++-- trytond/protocols/xmlrpc.py | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 00b92b66ee..4f6ef2cb07 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Manage microseconds in JSON-RPC and XML-RPC * Remove Sha field * Add password widget * Add Len to PYSON diff --git a/trytond/protocols/jsonrpc.py b/trytond/protocols/jsonrpc.py index 85dfe4cad6..02db48c572 100644 --- a/trytond/protocols/jsonrpc.py +++ b/trytond/protocols/jsonrpc.py @@ -37,11 +37,12 @@ def object_hook(dct): if '__class__' in dct: if dct['__class__'] == 'datetime': return datetime.datetime(dct['year'], dct['month'], dct['day'], - dct['hour'], dct['minute'], dct['second']) + dct['hour'], dct['minute'], dct['second'], dct['microsecond']) elif dct['__class__'] == 'date': return datetime.date(dct['year'], dct['month'], dct['day']) elif dct['__class__'] == 'time': - return datetime.time(dct['hour'], dct['minute'], dct['second']) + return datetime.time(dct['hour'], dct['minute'], dct['second'], + dct['microsecond']) elif dct['__class__'] == 'buffer': return buffer(base64.decodestring(dct['base64'])) elif dct['__class__'] == 'Decimal': @@ -66,6 +67,7 @@ class JSONEncoder(json.JSONEncoder): 'hour': obj.hour, 'minute': obj.minute, 'second': obj.second, + 'microsecond': obj.microsecond, } return {'__class__': 'date', 'year': obj.year, @@ -77,6 +79,7 @@ class JSONEncoder(json.JSONEncoder): 'hour': obj.hour, 'minute': obj.minute, 'second': obj.second, + 'microsecond': obj.microsecond, } elif isinstance(obj, buffer): return {'__class__': 'buffer', diff --git a/trytond/protocols/xmlrpc.py b/trytond/protocols/xmlrpc.py index ec020235c5..cd586594fb 100644 --- a/trytond/protocols/xmlrpc.py +++ b/trytond/protocols/xmlrpc.py @@ -49,6 +49,7 @@ def dump_time(self, value, write): 'hour': value.hour, 'minute': value.minute, 'second': value.second, + 'microsecond': value.microsecond, } self.dump_struct(value, write) @@ -84,7 +85,8 @@ def end_struct(self, data): if dct['__class__'] == 'date': dct = datetime.date(dct['year'], dct['month'], dct['day']) elif dct['__class__'] == 'time': - dct = datetime.time(dct['hour'], dct['minute'], dct['second']) + dct = datetime.time(dct['hour'], dct['minute'], dct['second'], + dct['microsecond']) elif dct['__class__'] == 'Decimal': dct = Decimal(dct['decimal']) self._stack[mark:] = [dct]