[Checkins] SVN: zc.datetimewidget/trunk/src/zc/datetimewidget/
added demo package an a functional test which uses it
Bernd Dorn
bernd.dorn at fhv.at
Sun Apr 30 10:07:12 EDT 2006
Log message for revision 67764:
added demo package an a functional test which uses it
do not return the tzinfo in the display field, because it is not used anyway
added a timezone test
Changed:
U zc.datetimewidget/trunk/src/zc/datetimewidget/datetimewidget.py
A zc.datetimewidget/trunk/src/zc/datetimewidget/demo/
A zc.datetimewidget/trunk/src/zc/datetimewidget/demo/README.txt
A zc.datetimewidget/trunk/src/zc/datetimewidget/demo/__init__.py
A zc.datetimewidget/trunk/src/zc/datetimewidget/demo/configure.zcml
A zc.datetimewidget/trunk/src/zc/datetimewidget/demo/content.py
A zc.datetimewidget/trunk/src/zc/datetimewidget/demo/interfaces.py
A zc.datetimewidget/trunk/src/zc/datetimewidget/demo/tests.py
A zc.datetimewidget/trunk/src/zc/datetimewidget/demo/timezone.py
A zc.datetimewidget/trunk/src/zc/datetimewidget/ftesting.zcml
A zc.datetimewidget/trunk/src/zc/datetimewidget/ftests.py
A zc.datetimewidget/trunk/src/zc/datetimewidget/tests.py
A zc.datetimewidget/trunk/src/zc/datetimewidget/timezones.txt
A zc.datetimewidget/trunk/src/zc/datetimewidget/zc.datetimewidget-ftesting.zcml
-=-
Modified: zc.datetimewidget/trunk/src/zc/datetimewidget/datetimewidget.py
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/datetimewidget.py 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/datetimewidget.py 2006-04-30 14:07:11 UTC (rev 67764)
@@ -31,6 +31,7 @@
if dt is not None:
if (dt.tzinfo is not None and
isinstance(dt.tzinfo, zope.datetime._tzinfo)):
+ tzinfo = ITZInfo(request)
dt = dt.replace(tzinfo=None) # TODO: this is a hack
# to accomodate pre-Zope-3.2 datetime widgets that assume UTC
# timezone. Zope 3.2+ datetime widgets should use the
@@ -79,11 +80,16 @@
_showsTime = "true"
def _toFormValue(self, value):
- return localizeDateTime(
- super(DatetimeWidget, self)._toFormValue(value), self.request)
+ dt = localizeDateTime(
+ super(DatetimeWidget, self)._toFormValue(value),
+ self.request)
+ return dt.strftime(self._format)
+
+
def _toFieldValue(self, input):
res = super(DatetimeWidget, self)._toFieldValue(input)
+ #import pdb;pdb.set_trace()
if res is not self.context.missing_value:
res = normalizeDateTime(res, self.request)
return res
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/README.txt
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/demo/README.txt 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/demo/README.txt 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,27 @@
+======================
+ Datetime Widget Demo
+======================
+
+This demo packe provides a simple content class which uses the
+zc.datetimewidget
+
+ >>> from zope.testbrowser.testing import Browser
+ >>> browser = Browser()
+ >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+ >>> browser.open('http://localhost/@@contents.html')
+
+It can be added by clicking on the "Datetimewidget Demo" link in the
+add menu. And giving it a name.
+
+ >>> link = browser.getLink('Datetimewidget Demo')
+ >>> link.click()
+ >>> nameCtrl = browser.getControl(name='new_value')
+ >>> nameCtrl.value = 'mydemo'
+ >>> applyCtrl = browser.getControl('Apply')
+ >>> applyCtrl.click()
+ >>> link = browser.getLink('mydemo')
+ >>> link.click()
+ >>> browser.url
+ 'http://localhost/mydemo/@@edit.html'
+
+
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/README.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/__init__.py
===================================================================
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/__init__.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/configure.zcml
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/demo/configure.zcml 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/demo/configure.zcml 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,30 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ i18n_domain="zope">
+
+ <!-- adapter for tzinfo -->
+ <adapter factory=".timezone.tzinfo"/>
+
+ <class class=".content.DemoContent">
+ <require permission="zope.View"
+ interface=".interfaces.IDemoContent"/>
+ <require permission="zope.ManageContent"
+ set_schema=".interfaces.IDemoContent"/>
+ </class>
+
+
+ <browser:editform
+ schema=".interfaces.IDemoContent"
+ label="Edit"
+ name="edit.html"
+ menu="zmi_views" title="Edit"
+ permission="zope.ManageContent"/>
+
+ <browser:addMenuItem
+ title="Datetimewidget Demo"
+ class=".content.DemoContent"
+ permission="zope.ManageContent"
+ />
+
+
+</configure>
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/content.py
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/demo/content.py 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/demo/content.py 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,16 @@
+from persistent import Persistent
+from zope.interface import implements
+from zope.app.container.contained import Contained
+from zope.schema.fieldproperty import FieldProperty
+from interfaces import IDemoContent
+
+class DemoContent(Persistent,Contained):
+
+ implements(IDemoContent)
+
+ startDate = FieldProperty(IDemoContent['startDate'])
+ endDate = FieldProperty(IDemoContent['endDate'])
+
+ startDatetime = FieldProperty(IDemoContent['startDatetime'])
+ endDatetime = FieldProperty(IDemoContent['endDatetime'])
+
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/content.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/interfaces.py
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/demo/interfaces.py 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/demo/interfaces.py 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,13 @@
+from zope.interface import Interface
+from zope.schema import Date,Datetime
+
+class IDemoContent(Interface):
+
+ startDate = Date(title=u"Start Date")
+ endDate = Date(title=u"End Date")
+
+ startDatetime = Datetime(title=u"Start Datetime")
+ endDatetime = Datetime(title=u"End Datetime")
+
+
+
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/interfaces.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/tests.py
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/demo/tests.py 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/demo/tests.py 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,15 @@
+import doctest
+import unittest
+from zope.testing.doctestunit import DocTestSuite
+def test_suite():
+
+ return unittest.TestSuite(
+ (
+ DocTestSuite('zc.datetimewidget.demo.timezone',
+ optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
+ ),
+ ))
+
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/tests.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/timezone.py
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/demo/timezone.py 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/demo/timezone.py 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,20 @@
+import pytz
+from zope import interface, component
+from zope.interface.common.idatetime import ITZInfo
+from zope.publisher.interfaces.browser import IBrowserRequest
+
+TZINFO=pytz.timezone('Europe/Vienna')
+
+ at interface.implementer(ITZInfo)
+ at component.adapter(IBrowserRequest)
+def tzinfo(request):
+
+ """This adapter adapts any interface to the timezone where this
+ demo was written.
+
+ >>> print tzinfo(None)
+ Europe/Vienna
+ """
+ return TZINFO
+
+
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/demo/timezone.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/ftesting.zcml
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/ftesting.zcml 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/ftesting.zcml 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,5 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ i18n_domain="zope">
+ <include package=".demo"/>
+</configure>
\ No newline at end of file
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/ftesting.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/ftests.py
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/ftests.py 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/ftests.py 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,10 @@
+from zope.app.testing import functional
+
+def test_suite():
+ suite = functional.FunctionalDocFileSuite(
+ 'demo/README.txt',
+ )
+ return suite
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/ftests.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/tests.py
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/tests.py 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/tests.py 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,44 @@
+##############################################################################
+#
+# Copyright (c) 2005 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Datetime Widget unittests
+
+$Id:$
+"""
+__docformat__ = "reStructuredText"
+
+import doctest
+import unittest
+
+from zope.testing.doctestunit import DocFileSuite, DocTestSuite
+from zope.app.testing import setup
+
+
+def setUp(test):
+ setup.placefulSetUp()
+
+def tearDown(test):
+ setup.placefulTearDown()
+
+
+def test_suite():
+ return unittest.TestSuite(
+ (
+ DocFileSuite('timezones.txt',
+ optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
+ ),
+ ))
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
+
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/tests.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/timezones.txt
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/timezones.txt 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/timezones.txt 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1,41 @@
+==================
+Handling Timezones
+==================
+
+Datetimes are always stored timezone aware, by default the utc
+timezone is used. We use the demo package here to have a content class
+and interface.
+
+In order to handle timezones correctly the zope instance has to
+provide an adapter from IBrowserRequest to ITZInfo. It is up to the
+instance what kind of implementation it uses. For this tests we just
+use the implementation of the demo.timezone module which always
+returns Europe/Vienna as timezone.
+
+ >>> from zope import component
+ >>> from datetime import datetime
+ >>> import pytz
+ >>> from zc.datetimewidget import datetimewidget
+ >>> from zc.datetimewidget.demo import timezone
+ >>> from zc.datetimewidget.demo.content import DemoContent
+ >>> from zc.datetimewidget.demo.interfaces import IDemoContent
+ >>> from zope.publisher.browser import TestRequest
+ >>> request = TestRequest()
+ >>> component.provideAdapter(timezone.tzinfo)
+ >>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
+ >>> tz = pytz.timezone('Europe/Vienna')
+ >>> field = IDemoContent['startDatetime']
+ >>> widget = datetimewidget.DatetimeWidget(field,request)
+ >>> dt = datetime(2006,5,1,12,tzinfo=pytz.utc)
+ >>> formValue = widget._toFormValue(dt)
+ >>> formValue
+ '2006-05-01 14:00:00'
+ >>> parsedValue = widget._toFieldValue(formValue)
+ >>> parsedValue
+ datetime.datetime(2006, 5, 1, 12, 0, tzinfo=<UTC>)
+
+
+
+
+
+
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/timezones.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zc.datetimewidget/trunk/src/zc/datetimewidget/zc.datetimewidget-ftesting.zcml
===================================================================
--- zc.datetimewidget/trunk/src/zc/datetimewidget/zc.datetimewidget-ftesting.zcml 2006-04-30 14:04:17 UTC (rev 67763)
+++ zc.datetimewidget/trunk/src/zc/datetimewidget/zc.datetimewidget-ftesting.zcml 2006-04-30 14:07:11 UTC (rev 67764)
@@ -0,0 +1 @@
+<include package="zc.datetimewidget" file="ftesting.zcml"/>
\ No newline at end of file
Property changes on: zc.datetimewidget/trunk/src/zc/datetimewidget/zc.datetimewidget-ftesting.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list