[Checkins] SVN: CMF/trunk/CMFCalendar/ - Forward-port from the 2.0 branch:

Jens Vagelpohl jens at dataflake.org
Sat Apr 8 07:55:57 EDT 2006


Log message for revision 66664:
  - Forward-port from the 2.0 branch:
  
    Log message for revision 66663:
      - Continuing work on CMFCalendar Fiveification:
    
        - Change CalendarView class methods and the calendar_day view to
          allow replacing python: expressions in the template with simple
          path expressions. The desired efficiency of the previous 
          implementation is retained by relying on the @memoize decorator.
    
        - Fix a flaw in the EventEditView class which might result in
          incorrect property values being shown.
    
        - remove Zope 2 interfaces for the Event and CalendarTool classes.
          There were none before so they are not needed for BBB purposes.
  
  

Changed:
  U   CMF/trunk/CMFCalendar/CalendarTool.py
  U   CMF/trunk/CMFCalendar/Event.py
  U   CMF/trunk/CMFCalendar/browser/calendar.py
  U   CMF/trunk/CMFCalendar/browser/event.py
  U   CMF/trunk/CMFCalendar/browser/templates/calendar_day.pt
  U   CMF/trunk/CMFCalendar/interfaces/__init__.py
  U   CMF/trunk/CMFCalendar/tests/test_Calendar.py
  U   CMF/trunk/CMFCalendar/tests/test_Event.py

-=-
Modified: CMF/trunk/CMFCalendar/CalendarTool.py
===================================================================
--- CMF/trunk/CMFCalendar/CalendarTool.py	2006-04-08 11:45:47 UTC (rev 66663)
+++ CMF/trunk/CMFCalendar/CalendarTool.py	2006-04-08 11:55:57 UTC (rev 66664)
@@ -28,7 +28,6 @@
 from Products.CMFCore.utils import UniqueObject
 
 from interfaces import ICalendarTool
-from interfaces.portal_calendar import portal_calendar as z2ICalendarTool
 from permissions import ManagePortal
 
 class CalendarTool (UniqueObject, SimpleItem):
@@ -38,7 +37,6 @@
     security = ClassSecurityInfo()
 
     implements(ICalendarTool)
-    __implements__ = (z2ICalendarTool,)
 
     calendar_types = ('Event',)
     calendar_states = ('published',)

Modified: CMF/trunk/CMFCalendar/Event.py
===================================================================
--- CMF/trunk/CMFCalendar/Event.py	2006-04-08 11:45:47 UTC (rev 66663)
+++ CMF/trunk/CMFCalendar/Event.py	2006-04-08 11:55:57 UTC (rev 66664)
@@ -37,8 +37,6 @@
 from exceptions import ResourceLockedError
 from interfaces import IEvent
 from interfaces import IMutableEvent
-from interfaces.Event import IEvent as z2IEvent
-from interfaces.Event import IMutableEvent as z2IMutableEvent
 from permissions import ChangeEvents
 from permissions import ModifyPortalContent
 from permissions import View
@@ -104,9 +102,7 @@
     security.declareObjectProtected(View)
 
     implements(IMutableEvent, IEvent, IDAVAware)
-    __implements__ = ( z2IMutableEvent
-                     , z2IEvent
-                     , PortalContent.__implements__
+    __implements__ = ( PortalContent.__implements__
                      , DefaultDublinCoreImpl.__implements__
                      )
 

Modified: CMF/trunk/CMFCalendar/browser/calendar.py
===================================================================
--- CMF/trunk/CMFCalendar/browser/calendar.py	2006-04-08 11:45:47 UTC (rev 66663)
+++ CMF/trunk/CMFCalendar/browser/calendar.py	2006-04-08 11:55:57 UTC (rev 66664)
@@ -33,9 +33,10 @@
     """
 
     @decode
-    def getStartAsString(self, day, event_brain):
+    def getStartAsString(self, event_brain):
         """ Retrieve formatted start string
         """
+        day = self.viewDay()
         event_start = event_brain.getObject().start()
         first_date = DateTime(day.Date()+" 00:00:00")
         
@@ -45,9 +46,10 @@
             return event_start.TimeMinutes()
 
     @decode
-    def getEndAsString(self, day, event_brain):
+    def getEndAsString(self, event_brain):
         """ Retrieve formatted end string
         """
+        day = self.viewDay()
         event_end = event_brain.getObject().end()
         last_date = DateTime(day.Date()+" 23:59:59")
         
@@ -64,46 +66,50 @@
 
         return DateTime(date)
 
-    def formattedDate(self, day):
+    def formattedDate(self):
         """ Return a simple formatted date string
         """
-        return day.aCommon()[:12]
+        return self.viewDay().aCommon()[:12]
 
-    def eventsForDay(self, day):
+    def eventsForDay(self):
         """ Get all event catalog records for a specific day
         """
         caltool = self._getTool('portal_calendar')
 
-        return caltool.getEventsForThisDay(day)
+        return caltool.getEventsForThisDay(self.viewDay())
 
     @memoize
-    def previousDayURL(self, day):
+    def previousDayURL(self):
         """ URL to the previous day's view
         """
+        day = self.viewDay()
         view_url = self._getViewURL()
 
         return '%s?date=%s' % (view_url, (day-1).Date())
 
     @memoize
-    def nextDayURL(self, day):
+    def nextDayURL(self):
         """ URL to the next day's view
         """
+        day = self.viewDay()
         view_url = self._getViewURL()
 
         return '%s?date=%s' % (view_url, (day+1).Date())
 
     @decode
-    def getNextDayLink(self, base_url, day):
+    def getNextDayLink(self, base_url):
         """ Return URL for the next day link
         """
+        day = self.viewDay()
         day += 1
         
         return '%s?date=%s' % (base_url, day.Date())
 
     @decode
-    def getPreviousDayLink(self, base_url, day):
+    def getPreviousDayLink(self, base_url):
         """ Return URL for the previous day link
         """
+        day = self.viewDay()
         day -= 1
         
         return '%s?date=%s' % (base_url, day.Date())

Modified: CMF/trunk/CMFCalendar/browser/event.py
===================================================================
--- CMF/trunk/CMFCalendar/browser/event.py	2006-04-08 11:45:47 UTC (rev 66663)
+++ CMF/trunk/CMFCalendar/browser/event.py	2006-04-08 11:55:57 UTC (rev 66664)
@@ -103,51 +103,83 @@
     @memoize
     @decode
     def title(self):
-        form = self.request.form
-        return form.get('title', None) or self.context.Title()
+        title = self.request.form.get('title', None)
 
+        if title is None:
+            title = self.context.Title()
+
+        return title
+
     @memoize
     @decode
     def description(self):
-        form = self.request.form
-        return form.get('description', None) or self.context.Description()
+        description = self.request.form.get('description', None)
 
+        if description is None:
+            description = self.context.Description()
+
+        return description
+
     @memoize
     @decode
     def contact_name(self):
-        form = self.request.form
-        return form.get('contact_name', None) or self.context.contact_name
+        contact_name = self.request.form.get('contact_name', None)
 
+        if contact_name is None:
+            contact_name = self.context.contact_name
+
+        return contact_name
+
     @memoize
     @decode
     def location(self):
-        form = self.request.form
-        return form.get('location', None) or self.context.location
+        location = self.request.form.get('location', None)
 
+        if location is None:
+            location = self.context.location
+
+        return location
+
     @memoize
     @decode
     def contact_email(self):
-        form = self.request.form
-        return form.get('contact_email', None) or self.context.contact_email
+        contact_email = self.request.form.get('contact_email', None)
 
+        if contact_email is None:
+            contact_email = self.context.contact_email
+
+        return contact_email
+
     @memoize
     @decode
     def event_type(self):
-        form = self.request.form
-        return form.get('event_type', None) or self.context.Subject()
+        event_type = self.request.form.get('event_type', None)
 
+        if event_type is None:
+            event_type = self.context.Subject()
+
+        return event_type
+
     @memoize
     @decode
     def contact_phone(self):
-        form = self.request.form
-        return form.get('contact_phone', None) or self.context.contact_phone
+        contact_phone = self.request.form.get('contact_phone', None)
 
+        if contact_phone is None:
+            contact_phone = self.context.contact_phone
+
+        return contact_phone
+
     @memoize
     @decode
     def event_url(self):
-        form = self.request.form
-        return form.get('event_url', None) or self.context.event_url
+        event_url = self.request.form.get('event_url', None)
 
+        if event_url is None:
+            event_url = self.context.event_url
+
+        return event_url
+
     @memoize
     @decode
     def start_time(self):
@@ -193,45 +225,63 @@
     @memoize
     @decode
     def effectiveYear(self):
-        eff_year = self.request.form.get('effectiveYear', None)
+        effective_year = self.request.form.get('effectiveYear', None)
 
-        return eff_year or self.context.getStartStrings()['year']
+        if effective_year is None:
+            effective_year = self.context.getStartStrings()['year']
 
+        return effective_year
+
     @memoize
     @decode
     def effectiveMo(self):
-        eff_month = self.request.form.get('effectiveMo', None)
+        effective_month = self.request.form.get('effectiveMo', None)
 
-        return eff_month or self.context.getStartStrings()['month']
+        if effective_month is None:
+            effective_month = self.context.getStartStrings()['month']
 
+        return effective_month
+
     @memoize
     @decode
     def effectiveDay(self):
-        eff_day = self.request.form.get('effectiveDay', None)
+        effective_day = self.request.form.get('effectiveDay', None)
 
-        return eff_day or self.context.getStartStrings()['day']
+        if effective_day is None:
+            effective_day = self.context.getStartStrings()['day']
 
+        return effective_day
+
     @memoize
     @decode
     def expirationYear(self):
-        exp_year = self.request.form.get('expirationYear', None)
+        expiration_year = self.request.form.get('expirationYear', None)
 
-        return exp_year or self.context.getEndStrings()['year']
+        if expiration_year is None:
+            expiration_year = self.context.getEndStrings()['year']
 
+        return expiration_year
+
     @memoize
     @decode
     def expirationMo(self):
-        exp_month = self.request.form.get('expirationMo', None)
+        expiration_month = self.request.form.get('expirationMo', None)
 
-        return exp_month or self.context.getEndStrings()['month']
+        if expiration_month is None:
+            expiration_month = self.context.getEndStrings()['month']
 
+        return expiration_month
+
     @memoize
     @decode
     def expirationDay(self):
-        exp_day = self.request.form.get('expirationDay', None)
+        expiration_day = self.request.form.get('expirationDay', None)
 
-        return exp_day or self.context.getEndStrings()['day']
+        if expiration_day is None:
+            expiration_day = self.context.getEndStrings()['day']
 
+        return expiration_day
+
     # controllers
 
     def edit_control( self
@@ -266,3 +316,4 @@
             return True, _(u'Event changed.')
         except ResourceLockedError, errmsg:
             return False, errmsg
+

Modified: CMF/trunk/CMFCalendar/browser/templates/calendar_day.pt
===================================================================
--- CMF/trunk/CMFCalendar/browser/templates/calendar_day.pt	2006-04-08 11:45:47 UTC (rev 66663)
+++ CMF/trunk/CMFCalendar/browser/templates/calendar_day.pt	2006-04-08 11:55:57 UTC (rev 66664)
@@ -12,21 +12,20 @@
 
 <div class="dayViewBox" metal:define-macro="dayViewBox">
 <table class="dayView" cellpadding="0" cellspacing="0" border="0"
-       tal:define="thisDay view/viewDay;
-                   events python: view.eventsForDay(thisDay)">
+       tal:define="events view/eventsForDay">
  <tr>
   <th>
    <a href="#" 
-      tal:attributes="href python: view.previousDayURL(thisDay)">&laquo;</a>
+      tal:attributes="href view/previousDayURL">&laquo;</a>
   </th>
   <th colspan="3" nowrap="nowrap" 
-      tal:content="python: view.formattedDate(thisDay)">Date Heading</th>
+      tal:content="view/formattedDate">Date Heading</th>
   <th>
    <a href="#" 
-      tal:attributes="href python: view.nextDayURL(thisDay)">&raquo;</a>
+      tal:attributes="href view/nextDayURL">&raquo;</a>
   </th>
  </tr>
- <tal:loop tal:repeat="item_info python: view.eventsForDay(thisDay)">
+ <tal:loop tal:repeat="item_info view/eventsForDay">
  <tr>
   <td class="heading" colspan="5" nowrap="nowrap">
    <a href="#" tal:attributes="href item_info/getURL"
@@ -35,11 +34,11 @@
  </tr>
  <tr>
   <td class="startDate" colspan="2" nowrap="nowrap"
-      tal:content="python: view.getStartAsString(thisDay, item_info)"
+      tal:content="python: view.getStartAsString(item_info)"
       >Event Start</td>
   <td nowrap="nowrap"> -- </td>
   <td class="endDate" colspan="2" nowrap="nowrap"
-      tal:content="python: view.getEndAsString(thisDay, item_info)"
+      tal:content="python: view.getEndAsString(item_info)"
       >Event End</td>
  </tr>
  </tal:loop>

Modified: CMF/trunk/CMFCalendar/interfaces/__init__.py
===================================================================
--- CMF/trunk/CMFCalendar/interfaces/__init__.py	2006-04-08 11:45:47 UTC (rev 66663)
+++ CMF/trunk/CMFCalendar/interfaces/__init__.py	2006-04-08 11:55:57 UTC (rev 66664)
@@ -17,15 +17,3 @@
 
 from _content import *
 from _tools import *
-
-# BBB: will be removed in CMF 2.2
-#      create zope2 interfaces
-from Interface.bridge import createZope3Bridge
-import Event
-import portal_calendar
-
-createZope3Bridge(IEvent, Event, 'IEvent')
-createZope3Bridge(IMutableEvent, Event, 'IMutableEvent')
-createZope3Bridge(ICalendarTool, portal_calendar, 'portal_calendar')
-
-del createZope3Bridge

Modified: CMF/trunk/CMFCalendar/tests/test_Calendar.py
===================================================================
--- CMF/trunk/CMFCalendar/tests/test_Calendar.py	2006-04-08 11:45:47 UTC (rev 66663)
+++ CMF/trunk/CMFCalendar/tests/test_Calendar.py	2006-04-08 11:55:57 UTC (rev 66664)
@@ -40,14 +40,6 @@
 
         return CalendarTool(*args, **kw)
 
-    def test_z2interfaces(self):
-        from Interface.Verify import verifyClass
-        from Products.CMFCalendar.interfaces.portal_calendar \
-                import portal_calendar as ICalendarTool
-        from Products.CMFCalendar.CalendarTool import CalendarTool
-
-        verifyClass(ICalendarTool, CalendarTool)
-
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
         from Products.CMFCalendar.interfaces import ICalendarTool

Modified: CMF/trunk/CMFCalendar/tests/test_Event.py
===================================================================
--- CMF/trunk/CMFCalendar/tests/test_Event.py	2006-04-08 11:45:47 UTC (rev 66663)
+++ CMF/trunk/CMFCalendar/tests/test_Event.py	2006-04-08 11:55:57 UTC (rev 66664)
@@ -43,16 +43,12 @@
         from Products.CMFCore.interfaces.Dynamic \
                 import DynamicType as IDynamicType
         from Products.CMFCalendar.Event import Event
-        from Products.CMFCalendar.interfaces.Event import IEvent
-        from Products.CMFCalendar.interfaces.Event import IMutableEvent
 
         verifyClass(ICatalogableDublinCore, Event)
         verifyClass(IContentish, Event)
         verifyClass(IDublinCore, Event)
         verifyClass(IDynamicType, Event)
         verifyClass(IMutableDublinCore, Event)
-        verifyClass(IEvent, Event)
-        verifyClass(IMutableEvent, Event)
 
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass



More information about the Checkins mailing list