[Checkins] SVN: Products.CMFCalendar/trunk/Products/CMFCalendar/ - fixed object initialization
Yvo Schubbe
y.2011 at wcm-solutions.de
Mon Feb 21 04:25:31 EST 2011
Log message for revision 120485:
- fixed object initialization
Changed:
U Products.CMFCalendar/trunk/Products/CMFCalendar/CHANGES.txt
UU Products.CMFCalendar/trunk/Products/CMFCalendar/Event.py
U Products.CMFCalendar/trunk/Products/CMFCalendar/tests/test_Event.py
-=-
Modified: Products.CMFCalendar/trunk/Products/CMFCalendar/CHANGES.txt
===================================================================
--- Products.CMFCalendar/trunk/Products/CMFCalendar/CHANGES.txt 2011-02-21 09:01:02 UTC (rev 120484)
+++ Products.CMFCalendar/trunk/Products/CMFCalendar/CHANGES.txt 2011-02-21 09:25:31 UTC (rev 120485)
@@ -4,6 +4,9 @@
2.3.0-alpha (unreleased)
------------------------
+- Event: Fixed object initialization.
+ Default start and stop times are now rounded and offset-naive.
+
- Require at least Zope 2.13.4.
- Deal with deprecation warnings for Zope 2.13.
Modified: Products.CMFCalendar/trunk/Products/CMFCalendar/Event.py
===================================================================
--- Products.CMFCalendar/trunk/Products/CMFCalendar/Event.py 2011-02-21 09:01:02 UTC (rev 120484)
+++ Products.CMFCalendar/trunk/Products/CMFCalendar/Event.py 2011-02-21 09:25:31 UTC (rev 120485)
@@ -11,8 +11,6 @@
#
##############################################################################
""" Event: A CMF-enabled Event object.
-
-$Id$
"""
from AccessControl.SecurityInfo import ClassSecurityInfo
@@ -113,27 +111,34 @@
, event_url=''
):
DefaultDublinCoreImpl.__init__(self)
- self.id=id
+ self.id = id
self.setTitle(title)
self.setDescription(description)
self.effective_date = effective_date
self.expiration_date = expiration_date
- self.setStartDate(start_date)
if start_date is None:
- start_date = DateTime()
+ # Round time to a value that exists in buildTimes().
+ dt = DateTime((int(DateTime()) / 1800 + 1) * 1800)
+ # Parse time the same way as in edit(). The result is offset-naive.
+ start_date = DateTime(str(dt)[:16])
+ else:
+ start_date = self._datify(start_date)
+
if end_date is None:
end_date = start_date
-
+ else:
+ end_date = self._datify(end_date)
if end_date < start_date:
end_date = start_date
+ self.setStartDate(start_date)
self.setEndDate(end_date)
- self.location=location
- self.contact_name=contact_name
- self.contact_email=contact_email
- self.contact_phone=contact_phone
- self.event_url=event_url
+ self.location = location
+ self.contact_name = contact_name
+ self.contact_email = contact_email
+ self.contact_phone = contact_phone
+ self.event_url = event_url
security.declarePrivate( '_datify' )
def _datify( self, attrib ):
Property changes on: Products.CMFCalendar/trunk/Products/CMFCalendar/Event.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCalendar/trunk/Products/CMFCalendar/tests/test_Event.py
===================================================================
--- Products.CMFCalendar/trunk/Products/CMFCalendar/tests/test_Event.py 2011-02-21 09:01:02 UTC (rev 120484)
+++ Products.CMFCalendar/trunk/Products/CMFCalendar/tests/test_Event.py 2011-02-21 09:25:31 UTC (rev 120485)
@@ -43,9 +43,48 @@
def test_new(self):
event = self._makeOne('test')
- self.assertEqual( event.getId(), 'test' )
- self.failIf( event.Title() )
+ self.assertEqual(event.getId(), 'test')
+ self.assertFalse(event.Title())
+ self.assertTrue(isinstance(event.start(), DateTime))
+ self.assertTrue(event.start().timezoneNaive())
+ self.assertTrue(isinstance(event.end(), DateTime))
+ self.assertTrue(event.end().timezoneNaive())
+ self.assertEqual(event.start(), event.end())
+ self.assertEqual(event.start().asdatetime(),
+ event.end().asdatetime())
+ def test_new_w_start_date(self):
+ event = self._makeOne('test', start_date='2003/04/05 06:07')
+
+ self.assertTrue(isinstance(event.start(), DateTime))
+ self.assertEqual(event.start(), DateTime('2003/04/05 06:07'))
+ self.assertTrue(event.start().timezoneNaive())
+ self.assertTrue(isinstance(event.end(), DateTime))
+ self.assertEqual(event.end(), DateTime('2003/04/05 06:07'))
+ self.assertTrue(event.end().timezoneNaive())
+
+ def test_new_vs_edit(self):
+ event1 = self._makeOne('test',
+ start_date='2003/04/05 06:07',
+ end_date='2003/04/05 18:07')
+ event2 = self._makeOne('test')
+ event2.edit(effectiveDay=5, effectiveMo=4, effectiveYear=2003,
+ expirationDay=5, expirationMo=4, expirationYear=2003,
+ start_time='06:07', startAMPM='AM',
+ stop_time='06:07', stopAMPM='PM')
+
+ self.assertEqual(event1.start(), event2.start())
+ self.assertEqual(event1.start().asdatetime(),
+ event2.start().asdatetime())
+ self.assertEqual(event1.end(), event2.end())
+ self.assertEqual(event1.end().asdatetime(),
+ event2.end().asdatetime())
+
+ def test_new_vs_buildTimes(self):
+ event = self._makeOne('test')
+
+ self.assertTrue(event.getStartTimeString()[:5] in event.buildTimes())
+
def test_edit(self):
# Year month and day were processed in the wrong order
# Also see http://collector.zope.org/CMF/202
More information about the checkins
mailing list