changeset 63c5ffec46df in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=63c5ffec46df
description:
        Use biginteger for integer overflowing XML-RPC integer dumper

        issue10732
        review363891002
diffstat:

 trytond/protocols/xmlrpc.py     |  10 ++++++++++
 trytond/tests/test_protocols.py |   4 ++++
 2 files changed, 14 insertions(+), 0 deletions(-)

diffs (38 lines):

diff -r 598bc200808c -r 63c5ffec46df trytond/protocols/xmlrpc.py
--- a/trytond/protocols/xmlrpc.py       Thu Sep 16 09:00:16 2021 +0200
+++ b/trytond/protocols/xmlrpc.py       Sun Sep 19 00:04:57 2021 +0200
@@ -55,10 +55,20 @@
     self.dump_struct(value, write)
 
 
+def dump_long(self, value, write):
+    try:
+        self.dump_long(value, write)
+    except OverflowError:
+        write('<value><biginteger>')
+        write(str(int(value)))
+        write('</biginteger></value>\n')
+
+
 client.Marshaller.dispatch[Decimal] = dump_decimal
 client.Marshaller.dispatch[datetime.date] = dump_date
 client.Marshaller.dispatch[datetime.time] = dump_time
 client.Marshaller.dispatch[datetime.timedelta] = dump_timedelta
+client.Marshaller.dispatch[int] = dump_long
 
 
 def dump_struct(self, value, write, escape=client.escape):
diff -r 598bc200808c -r 63c5ffec46df trytond/tests/test_protocols.py
--- a/trytond/tests/test_protocols.py   Thu Sep 16 09:00:16 2021 +0200
+++ b/trytond/tests/test_protocols.py   Sun Sep 19 00:04:57 2021 +0200
@@ -100,6 +100,10 @@
         'Test time'
         self.dumps_loads(datetime.datetime.now().time())
 
+    def test_biginteger(self):
+        "Test BigInteger"
+        self.dumps_loads(client.MAXINT + 1)
+
     def test_immutable_dict(self):
         "Test ImmutableDict"
         self.dumps_loads(ImmutableDict(foo='bar'))

Reply via email to