[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