[Zope-Checkins] SVN: Zope/trunk/ DateTime conversion of datetime
objects with non-pytz tzinfo.
Laurence Rowe
l at lrowe.co.uk
Tue Aug 5 07:49:40 EDT 2008
Log message for revision 89373:
DateTime conversion of datetime objects with non-pytz tzinfo.
Timezones() returns a copy of the timezone list (allows tests to run).
Changed:
U Zope/trunk/doc/CHANGES.txt
U Zope/trunk/lib/python/DateTime/DateTime.py
U Zope/trunk/lib/python/DateTime/tests/testDateTime.py
-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt 2008-08-05 11:34:49 UTC (rev 89372)
+++ Zope/trunk/doc/CHANGES.txt 2008-08-05 11:49:40 UTC (rev 89373)
@@ -204,6 +204,9 @@
Bugs Fixed
+ - DateTime conversion of datetime objects with non-pytz tzinfo.
+ Timezones() returns a copy of the timezone list (allows tests to run).
+
- LP #253362: better dealing with malformed HTTP_ACCEPT_CHARSET headers
- Launchpad #246748: added 'immediate' option to sendXXX() methods
Modified: Zope/trunk/lib/python/DateTime/DateTime.py
===================================================================
--- Zope/trunk/lib/python/DateTime/DateTime.py 2008-08-05 11:34:49 UTC (rev 89372)
+++ Zope/trunk/lib/python/DateTime/DateTime.py 2008-08-05 11:49:40 UTC (rev 89373)
@@ -599,7 +599,8 @@
tz = None
else:
self._timezone_naive = False
- tz = arg.tzinfo.zone
+ # if we have a pytz tzinfo, use the `zone` attribute as a key
+ tz = getattr(arg.tzinfo, 'zone', numerictz)
ms = sc - math.floor(sc)
x = _calcDependentSecond2(yr,mo,dy,hr,mn,sc)
@@ -1850,5 +1851,5 @@
# Module methods
def Timezones():
"""Return the list of recognized timezone names"""
- return PytzCache._zlst
+ return list(PytzCache._zlst)
Modified: Zope/trunk/lib/python/DateTime/tests/testDateTime.py
===================================================================
--- Zope/trunk/lib/python/DateTime/tests/testDateTime.py 2008-08-05 11:34:49 UTC (rev 89372)
+++ Zope/trunk/lib/python/DateTime/tests/testDateTime.py 2008-08-05 11:49:40 UTC (rev 89373)
@@ -19,7 +19,7 @@
from DateTime.DateTime import _findLocalTimeZoneName, _cache
from DateTime import DateTime
-from datetime import datetime
+from datetime import datetime, tzinfo, timedelta
import pytz
import legacy
@@ -34,7 +34,25 @@
DATADIR = os.path.dirname(os.path.abspath(f))
del f
+ZERO = timedelta(0)
+class FixedOffset(tzinfo):
+ """Fixed offset in minutes east from UTC."""
+
+ def __init__(self, offset, name):
+ self.__offset = timedelta(minutes = offset)
+ self.__name = name
+
+ def utcoffset(self, dt):
+ return self.__offset
+
+ def tzname(self, dt):
+ return self.__name
+
+ def dst(self, dt):
+ return ZERO
+
+
class DateTimeTests(unittest.TestCase):
def _compare(self, dt1, dt2, ms=1):
@@ -561,8 +579,17 @@
real_failures = list(set(failures).difference(set(expected_failures)))
self.failIf(real_failures, '\n'.join(real_failures))
-
-
+
+ def testBasicTZ(self):
+ """psycopg2 supplies it's own tzinfo instances, with no `zone` attribute
+ """
+ tz = FixedOffset(60, 'GMT+1')
+ dt1 = datetime(2008, 8, 5, 12, 0, tzinfo=tz)
+ DT = DateTime(dt1)
+ dt2 = DT.asdatetime()
+ offset1 = dt1.tzinfo.utcoffset(dt1)
+ offset2 = dt2.tzinfo.utcoffset(dt2)
+ self.assertEqual(offset1, offset2)
def test_suite():
More information about the Zope-Checkins
mailing list