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