Fix Numeric over XML-RPC for issue1874

This commit is contained in:
Cédric Krier committed 2011-03-25 11:56:14 +01:00
1 parent 406963254e
commit ba40e3734a
2 files changed
+12 -2

No files matched your search

+7 -2
View File
@@ -102,8 +102,7 @@ class FloatDescriptor(FieldDescriptor):
default = 0.0
def __set__(self, instance, value):
assert isinstance(value, float)
super(FloatDescriptor, self).__set__(instance, value)
super(FloatDescriptor, self).__set__(instance, float(value))
class NumericDescriptor(FieldDescriptor):
@@ -609,6 +608,12 @@ class Model(object):
fields.append(name)
self._values.update(self._proxy.read(self.id, fields,
self._config.context))
for field in fields:
if (field in self._fields
and self._fields[field]['type'] == 'float'
and isinstance(self._values[field], Decimal)):
# XML-RPC return Decimal for double
self._values[field] = float(self._values[field])
def _default_get(self):
'Set default values'
+5
View File
@@ -22,6 +22,11 @@ xmlrpclib.Marshaller.dispatch[datetime.date] = \
lambda self, value, write: self.dump_datetime(
datetime.datetime.combine(value, datetime.time()), write)
def _end_double(self, data):
self.append(Decimal(data))
self._value = 0
xmlrpclib.Unmarshaller.dispatch["double"] = _end_double
_CONFIG = threading.local()