User buffer for binary fields

issue2316
review192001
This commit is contained in:
Korbinian Preisler
2011-12-02 07:29:54 +01:00
parent 93ebf26496
commit ea4353090a
2 changed files with 16 additions and 1 deletions
+9 -1
View File
@@ -92,6 +92,14 @@ class CharDescriptor(FieldDescriptor):
super(CharDescriptor, self).__set__(instance, value or '')
class BinaryDescriptor(FieldDescriptor):
default = None
def __set__(self, instance, value):
assert isinstance(value, (basestring, buffer)) or value in (None, False)
super(BinaryDescriptor, self).__set__(instance, value or '')
class IntegerDescriptor(FieldDescriptor):
default = 0
@@ -296,7 +304,7 @@ class MetaModelFactory(object):
'char': CharDescriptor,
'text': CharDescriptor,
'sha': CharDescriptor,
'binary': CharDescriptor,
'binary': BinaryDescriptor,
'selection': CharDescriptor, # TODO implement its own descriptor
'integer': IntegerDescriptor,
'biginteger': IntegerDescriptor,
+7
View File
@@ -17,10 +17,17 @@ def dump_decimal(self, value, write):
write(str(value))
write("</double></value>\n")
def dump_buffer(self, value, write):
self.write = write
value = xmlrpclib.Binary(value)
value.encode(self)
del self.write
xmlrpclib.Marshaller.dispatch[Decimal] = dump_decimal
xmlrpclib.Marshaller.dispatch[datetime.date] = \
lambda self, value, write: self.dump_datetime(
datetime.datetime.combine(value, datetime.time()), write)
xmlrpclib.Marshaller.dispatch[buffer] = dump_buffer
def _end_double(self, data):