Handle date and datetime in XML-RPC
(transplanted from 9a9c2ca4f50794fd13f08b09eb5093aef1a041d7)
This commit is contained in:
1 parent
8e16613cc4
commit
f341f6f68d
2 files changed
+15
-3
No files matched your search
@@ -98,9 +98,11 @@ class Date(Field):
|
||||
return datetime.date(year, month, day)
|
||||
|
||||
assert(isinstance(value, datetime.date))
|
||||
# datetime must be tested separately because datetime is a
|
||||
# subclass of date:
|
||||
assert(not isinstance(value, datetime.datetime))
|
||||
# Allow datetime with min time for XML-RPC
|
||||
if value.time() != datetime.time():
|
||||
# datetime must be tested separately because datetime is a
|
||||
# subclass of date:
|
||||
assert(not isinstance(value, datetime.datetime))
|
||||
return value
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import os
|
||||
import gzip
|
||||
import StringIO
|
||||
import base64
|
||||
import datetime
|
||||
|
||||
# convert decimal to float before marshalling:
|
||||
from decimal import Decimal
|
||||
@@ -23,11 +24,20 @@ xmlrpclib.Marshaller.dispatch[Decimal] = \
|
||||
lambda self, value, write: self.dump_double(float(value), write)
|
||||
xmlrpclib.Marshaller.dispatch[type(None)] = \
|
||||
lambda self, value, write: self.dump_bool(bool(value), write)
|
||||
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(Float(data))
|
||||
self._value = 0
|
||||
xmlrpclib.Unmarshaller.dispatch["double"] = _end_double
|
||||
def _end_dateTime(self, data):
|
||||
value = xmlrpclib.DateTime()
|
||||
value.decode(data)
|
||||
value = xmlrpclib._datetime_type(data)
|
||||
self.append(value)
|
||||
xmlrpclib.Unmarshaller.dispatch["dateTime.iso8601"] = _end_dateTime
|
||||
|
||||
|
||||
class GenericXMLRPCRequestHandler:
|
||||
|
||||
Reference in new issue
Block a user