Hi All,

  I recently added a ticket earlier today (#1174) which fixed a problem I was 
having when trying to set the until date for a recurring event. But this 
opens up a whole can of worms when you try and use the meeting helper, and 
since I can't update original ticket, or figure out how to upload files to 
trac, here is a patch I came up with to keep the original change and get the 
meeting helper to work with it.

  Michael
Index: browser/configure.zcml
===================================================================
--- browser/configure.zcml	(revision 30187)
+++ browser/configure.zcml	(working copy)
@@ -161,14 +161,26 @@
     permission="calendar.ManageParticipationStatus"
     />
 
-  <browser:page
-    for="calcore.interfaces.ICalendar"
-    class=".browser.meetinghelper.MeetingHelperView"
-    template="meetinghelper.pt"
-    name="meetinghelper.html"
-    permission="calendar.CreateEvents"
-    />
+  <browser:editform
+     for="calcore.interfaces.ICalendar"
+     schema=".browser.meetinghelper.IMeetingHelper"
+     class=".browser.meetinghelper.MeetingHelperView"
+     template="meetinghelper.pt"
+     name="meetinghelper.html"
+     permission="calendar.CreateEvents">
 
+    <browser:widget
+       field="begindate"
+       class=".browser.widget.DivDatetimeWithoutTimeWidget"
+       />
+
+    <browser:widget
+       field="enddate"
+       class=".browser.widget.DivDatetimeWithoutTimeWidget"
+       />
+
+  </browser:editform>
+
   <browser:page
     for="calcore.interfaces.ICalendar"
     class=".browser.icalsupport.ICalendarImportExportView"
Index: browser/widget.py
===================================================================
--- browser/widget.py	(revision 30187)
+++ browser/widget.py	(working copy)
@@ -224,6 +224,7 @@
             except (DateTimeError, ValueError, IndexError), v:
                 raise ConversionError("Invalid datetime data", v)
 
+
 class DivDateWidget(DateWidget):
 
     time_format = '%Y-%m-%d'
@@ -282,6 +283,22 @@
                     format = localizer.default(self.time_format)
                 else:
                     format = self.time_format
+                return str2datetime(input, format).date()
+            except (DateTimeError, ValueError, IndexError), v:
+                raise ConversionError("Invalid datetime data", v)
+
+
+class DivDatetimeWithoutTimeWidget(DivDateWidget):
+    def _toFieldValue(self, input):
+        if input == self._missing:
+            return self.context.missing_value
+        else:
+            try:
+                localizer = getattr(self.context.context, 'Localizer', None)
+                if localizer is not None:
+                    format = localizer.default(self.time_format)
+                else:
+                    format = self.time_format
                 return str2datetime(input, format)
             except (DateTimeError, ValueError, IndexError), v:
                 raise ConversionError("Invalid datetime data", v)
Index: browser/meetinghelper.py
===================================================================
--- browser/meetinghelper.py	(revision 30187)
+++ browser/meetinghelper.py	(working copy)
@@ -19,7 +19,7 @@
 
 from Products.Five.browser import BrowserView, EditView
 from zope.interface import Interface, implements
-from zope.schema import Date
+from zope.schema import Datetime
 from zope.app.form.interfaces import WidgetInputError, MissingInputError
 from zope.app.form.utility import setUpEditWidgets, applyWidgetsChanges
 from calcore.schema import Timedelta, Time
@@ -31,11 +31,11 @@
 class IMeetingHelper(Interface):
     """Just a little schema, so that we can use widgets"""
     
-    begindate = Date(
+    begindate = Datetime(
         title=_("First date"),
         description=_("Start searching from this date."))
 
-    enddate = Date(
+    enddate = Datetime(
         title=_("Last date"),
         description=_("Stop searching after this date."))
 
Index: ftests/calendartest.py
===================================================================
--- ftests/calendartest.py	(revision 30187)
+++ ftests/calendartest.py	(working copy)
@@ -170,6 +170,8 @@
         # In Zope 2.8 these seems to have to sit directly on the request or
         # Five will not find them.
         request=Request(stdin, env, response)
+        # hack to make my meetinghelper test work.
+        request.SESSION = {}
         for k,v in extra.items():
             setattr(request, k, v)
 
Index: ftests/test_allday.py
===================================================================
--- ftests/test_allday.py	(revision 30187)
+++ ftests/test_allday.py	(working copy)
@@ -30,6 +30,29 @@
 from calendartest import CalendarTestCase, user_id, manager_id
 
 class testAccessControl(CalendarTestCase):
+
+    def test_view_meetingHelper(self):
+        response = self.publish(
+            '%s/meetinghelper.html' % self.usercalpath,
+            basic = '%s:secret' % user_id)
+        self.assertResponse(response, 200)
+
+    def test_search_meetinghelper(self):
+        response = self.publish(
+            '%s/meetinghelper.html' % self.usercalpath,
+            basic = '%s:secret' % user_id,
+            extra = {'form': {'use_query': '',
+                              'search_query': '',
+                              'field.begindate': '2005-12-01',
+                              'field.enddate': '2005-12-08',
+                              'field.fromhour_hour': '10',
+                              'field.fromhour_minute': '00',
+                              'field.tohour_hour': '17',
+                              'field.tohour_minute': '00',
+                              'field.duration': '01:00',
+                              'UPDATE_SEARCH_FREETIME': 1}
+                     })
+        self.assertResponse(response, 200)
     
     def test_alldayCreate(self):
         # The time should not make any kind of difference
_______________________________________________
cps-devel mailing list
http://lists.nuxeo.com/mailman/listinfo/cps-devel

Reply via email to