You are here: Home Plone products RecurringEvent

RecurringEvent (0.14)

by olena last modified 2009-02-10
Released on 2006-03-29 by Pawel Marzec for Plone 2.1 under GPL - GNU General Public License available for All platforms.
Software development stage: stable
RecurringEvent is a product which delivers new type of event - the recurring event with attendees' list and iCal/vCal infos.
It is specialized type of standard Event type. Main specialization points are:
  • recue mode : specifies the mode of recurrence. It could be one of:
    • one time - this is standard Event's behaviour
    • until some date in future - extended Event's behaviour, it works with collaboration with recue offset property
    • forever - the same as until but never ending story
  • recue offset : specifies how often events apears again in our schedulers/calendars. It could be one of:
    • daily
    • weekly
    • monthly
    • yearly
  • recue until date : DateTime property witch specifies the end of recurrence. Here should be noticed that every Event has start and end DateTime and these describe the length/duration of event. For example the duration of the Mathematic lesson ;) recue until date has specified until when we should take a consideration about that event's recurrance in our scheduler. For example we learn Mathematic only till holidays ;)
  • attendees : with conjunction with Attendee zope role - that role should be created manualy! - and ATMemberSelectWidget - it has to be installed - we can share RecurringEvent with other members of our Plone portal. Attendee role guards that only to invited attendees will have been granted View permission te read about planned event. In that place come specialized workflow installed in our Plone portal. That worklfow is responsible to manage local roles of RecurringEvent object and send notification to Plone portal's members during publication phase.
  • attendees notification : all attendees are notified via e-mail about publication of a new RecurringEvent object at which they are invited by creator/owner. In skin directory you can find standard e-mail message - feel free to customize it to fit your needs. Additionally to that e-mail special iCal/vCal attachments are generated.
  • iCal/vCal: definition files to download are extended to contain additional information about recurrance and attendees' list as specifed in appropriate RFC-2445 document.
  • CalendarX: out of the box RecurringEvent cooperates well with that calendar, but CalendarX's skin has to be customized - take a look at scheduler.zexp package which contains an example (search RORK comments inside page templates)

It should be noted that installing that product will modify your portal_catalog tool. Additional indexes and metadata entries will be added: recueDays, recueWeeks, recueMonths, recueYears and appropriate metadatas. These indexes are lists of days, weeks, months, years when the RecurringEvent object should appear.

How to use it? There is an example of customizing CalendarX product to cooperate. Every RecurrintEvent objects can generate specialized list of days, weeks, months and years and theses computed fields are used to create indexes. To make a list of events for given day/week/month/year only make a containment test of that index with portal_catalog. In my opinion this way is the fastest I know to create the list of RecurrintEvents and not to browse all of them one by one and not to revoke any of them from ZODB. The cost of serach is O(log(n)) , but with houndreds of thousand of RecurringEvent these indexes will eat a lot of your memory - but it is normal behaviour with big indexes. :D


  • there could be a problem with recurring 29'th - 31'th day's in some configurations of properties becouse I've made some assumptions of day shifting arithmentic (most of known PIM / Scheduler planners have that problem, but they are elusive bugs/strangers and almost nobody care about it):
    • check what happen if you want to recue 31'th day of month in monthly mode - sometimes it could be a first day of second next month - there could appear a one month gap
    • problem with vary length of February and this kind of a gap also can appear

I've thought strongly about how to fix that problem. I have few ideas how to do it but I don't have KISS solution for that which will not disturb clear calculation engine already implemented. If you have some ideas share them with me, please.

If you see some english errors above feel free to correct them or write to me directly. It isn't my mother tounge ;)


Document Actions
Powered by Plone