Commit f1023cfb authored by Hanno Schlichting's avatar Hanno Schlichting

Added forward compatibility with DateTime 3 by backporting c121602 and c121606 from trunk

parent e215a9d1
......@@ -15,6 +15,8 @@ Bugs Fixed
Features Added
++++++++++++++
- Added forward compatibility with DateTime 3.
- ZPublisher: HTTPResponse.appendHeader now keeps header values to a single
line by default to avoid causing problems for proxy servers which do not
correctly handle multi-line headers.
......
......@@ -18,14 +18,14 @@ from DateTime.DateTime import DateTime
class PersistentUtil:
def bobobase_modification_time(self):
jar=self._p_jar
oid=self._p_oid
jar = self._p_jar
oid = self._p_oid
if jar is None or oid is None:
return DateTime()
try:
t = self._p_mtime
except:
except AttributeError:
t = 0
return DateTime(t)
......
......@@ -14,6 +14,7 @@
import re
from types import ListType, TupleType, UnicodeType
from DateTime import DateTime
from DateTime.interfaces import SyntaxError
from cgi import escape
# This may get overwritten during configuration
......@@ -106,16 +107,16 @@ def field2date(v):
v = field2string(v)
try:
v = DateTime(v)
except DateTime.SyntaxError, e:
raise DateTime.SyntaxError, "Invalid DateTime "+escape(`v`)
except SyntaxError:
raise SyntaxError("Invalid DateTime " + escape(repr(v)))
return v
def field2date_international(v):
v = field2string(v)
try:
v = DateTime(v, datefmt="international")
except DateTime.SyntaxError, e:
raise DateTime.SyntaxError, "Invalid DateTime "+escape(`v`)
except SyntaxError:
raise SyntaxError("Invalid DateTime " + escape(repr(v)))
return v
def field2boolean(v):
......
......@@ -573,15 +573,15 @@ class HTTPRequestTests(unittest.TestCase):
def test_processInputs_w_tainted_values_cleans_exceptions(self):
# Feed tainted garbage to the conversion methods, and any exception
# returned should be HTML safe
from DateTime.DateTime import DateTime
from DateTime.interfaces import SyntaxError
from ZPublisher.Converters import type_converters
for type, convert in type_converters.items():
try:
convert('<html garbage>')
except Exception, e:
except Exception as e:
self.assertFalse('<' in e.args,
'%s converter does not quote unsafe value!' % type)
except DateTime.SyntaxError, e:
except SyntaxError as e:
self.assertFalse('<' in e,
'%s converter does not quote unsafe value!' % type)
......
......@@ -32,7 +32,7 @@ from ZPublisher.HTTPResponse import HTTPResponse
# Make DateTime.DateTime marshallable via XML-RPC
# http://www.zope.org/Collectors/Zope/2109
from DateTime.DateTime import DateTime
WRAPPERS = xmlrpclib.WRAPPERS + (DateTime,)
WRAPPERS = xmlrpclib.WRAPPERS + (DateTime, )
def dump_instance(self, value, write):
# Check for special wrappers
......@@ -50,6 +50,8 @@ def dump_instance(self, value, write):
self.dump_struct(value, write)
xmlrpclib.Marshaller.dispatch[types.InstanceType] = dump_instance
xmlrpclib.Marshaller.dispatch[DateTime] = dump_instance
def parse_input(data):
"""Parse input data and return a method path and argument tuple
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment