Hi Folks, I'd like to get recurrence working in Chandler in the early 0.6 timeframe. At the moment, Chandler does't store repeating events in the repository as anything but a finite number of disconnected events. There are various problems with this:
- We can't represent indefinitely recurring events in the repository, currently the only way to create a recurring event is to import it from iCalendar, and then only the first 10 events are put in the repository to avoid infinite loops - There are no affordances for users to manipulate entire recurrence sets (to permanently reschedule a weekly 10AM meeting to 11AM, for instance) To get recurrence working well in Chandler, we need to write or choose a Python class. Currently, I'm using the recurrence set implementation in dateutil.rrule when importing iCalendar recurrence sets. It would be tempting to use this class for Chandler's concrete implementation of recurrence, but there are complications. 1) Currently, we're using mxDateTime for datetimes, dateutil.rrule uses datetime from the Python standard library. Among other things, mx offers a variety of date parsers that the standard datetime doesn't. On the other hand, the standard datetime is timezone aware with very little effort. Right now iCalendar import/export/sharing just converts datetimes to mxDateTimes. 2) Nick Bastin's forthcoming Python bindings for ICU will offer ICU datetimes which are just wrappers around ICU datetimes. These datetimes will have a whole different collection of methods associated with them than mx or Python's datetime. Some methods that we currently use may not be there (I haven't checked yet), and many of the new methods are needed for localization. --------------- It's not particularly hard to convert one datetime class instance to another, but it would be great to only have one datetime class in use throughout Chandler. There will be a lot of code in Chandler that displays datetimes, these datetimes will need to be localized. Overall, it might make our lives easiest to settle on ICU datetimes throughout our content model. If we follow this path, to get recurrence working we'll need to: A) Pry some working bindings out of Nick's tender clutches :). Nick says he's got a fair fraction of ICU datetimes working, but the bindings as a whole aren't done. My (perhaps naive) hope is to do the work to get recurrence working using one date time class. So if we decide to use ICU datetimes through Chandler, it would be great to start integrating ICU ASAP. We probably won't be able to switch everything over yet, since the bindings aren't done, but we could at least get started switching over datetimes. B) Either subclass dateutil.rrule to use ICU datetimes, or roll our own recurrence class. I'd much prefer the former. Off the cuff I don't think it should be terribly hard. Comment away! Sincerely, Jeffrey _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Open Source Applications Foundation "Dev" mailing list http://lists.osafoundation.org/mailman/listinfo/dev
