Ticket #3219: xmlrpc_datetime_r28820.diff
| File xmlrpc_datetime_r28820.diff, 3.0 KB (added by chadmaine, 3 years ago) |
|---|
-
twisted/web/xmlrpc.py
92 92 separator = '.' 93 93 allowedMethods = ('POST',) 94 94 95 def __init__(self, allowNone=False ):95 def __init__(self, allowNone=False, useDateTime=False): 96 96 resource.Resource.__init__(self) 97 97 self.subHandlers = {} 98 98 self.allowNone = allowNone 99 self.useDateTime = useDateTime 99 100 100 101 def putSubHandler(self, prefix, handler): 101 102 self.subHandlers[prefix] = handler … … 110 111 request.content.seek(0, 0) 111 112 request.setHeader("content-type", "text/xml") 112 113 try: 113 args, functionPath = xmlrpclib.loads(request.content.read()) 114 args, functionPath = xmlrpclib.loads(request.content.read(), 115 use_datetime=self.useDateTime) 114 116 except Exception, e: 115 117 f = Fault(self.FAILURE, "Can't deserialize input: %s" % (e,)) 116 118 self._cbRender(f, request) … … 303 305 protocol = QueryProtocol 304 306 305 307 def __init__(self, path, host, method, user=None, password=None, 306 allowNone=False, args=(), canceller=None ):308 allowNone=False, args=(), canceller=None, useDateTime=False): 307 309 """ 308 310 @type path: C{str} 309 311 @param path: The path portion of the URL to which to post method calls. … … 338 340 self.payload = payloadTemplate % (method, 339 341 xmlrpclib.dumps(args, allow_none=allowNone)) 340 342 self.deferred = defer.Deferred(canceller) 343 self.useDateTime = useDateTime 341 344 342 345 def parseResponse(self, contents): 343 346 if not self.deferred: 344 347 return 345 348 try: 346 response = xmlrpclib.loads(contents)[0][0] 349 response = xmlrpclib.loads(contents, 350 use_datetime=self.useDateTime)[0][0] 347 351 except: 348 352 deferred, self.deferred = self.deferred, None 349 353 deferred.errback(failure.Failure()) … … 378 382 """ 379 383 queryFactory = _QueryFactory 380 384 381 def __init__(self, url, user=None, password=None, allowNone=False): 385 def __init__(self, url, user=None, password=None, allowNone=False, 386 useDateTime=False): 382 387 """ 383 388 @type url: C{str} 384 389 @param url: The URL to which to post method calls. Calls will be made … … 428 433 if password is not None: 429 434 self.password = password 430 435 self.allowNone = allowNone 436 self.useDateTime = useDateTime 431 437 432 438 def callRemote(self, method, *args): 433 439 """ … … 447 453 connector.disconnect() 448 454 factory = self.queryFactory( 449 455 self.path, self.host, method, self.user, 450 self.password, self.allowNone, args, cancel )456 self.password, self.allowNone, args, cancel, self.useDateTime) 451 457 if self.secure: 452 458 from twisted.internet import ssl 453 459 connector = reactor.connectSSL(self.host, self.port or 443,
