Diez B. Roggisch
deets at nospam.web.de
Tue Sep 23 09:09:07 CEST 2008
Joshua Gardner schrieb:
> I'm brand new to USENET so please bear with me.
> I'm writing a specialized to-do list app. I'm using Django but this is
> not a question about Django. It has to have recurring tasks set by the
> managers for the employees to then check off.
> I've got pretty much everything in the app worked out, except for one
> thing: the repeating tasks. I want to have it so that the manager puts
> in a repeating task with a description and a repeat rule. This rule then
> generates simpler one-time tasks. These one-time tasks have a
> description, a time (a datetime.datetime object) and "completed" boolean.
> I've looked around and think I have these options:
> 1. Manually put it all together with another Django model that
> implements the repeat rules.
> 2. Do the same thing but use dateutil.rrule to help.
> 3. Use the icalendar (http://codespeak.net/icalendar/) module to access
> ICS files.
> 4. vObject (http://vobject.skyhouseconsulting.com/) to do the same.
> I think I want to use vObject because it uses dateutil and the
> management can easily manage tasks from a desktop app.
> Only thing is that I find vObject's documentation very cryptic and was
> wondering if anybody here could shed some light on how to use vObject. A
> simple "getting-started" tutorial or something similar would be nice.
I think you are going down a wrong route here. I have implemented a
reservation management application for a museum in TurboGears - and
while I use icalendar to support ICS-based viewing of the reservations,
I completely manage * store them based on my own model.
In case of the recurring events, I have one master-event, that defines
the start & recurrence-options.
I then create child-events that essentially are write-protected (all
editing goes to the master), and serve only as place-holder. But if you
want, you can "detach" them, to make them live on their own.
The reason for this is simple: if you want to display views of your
tasks based on e.g. a specific day, you can query the database. Simple
queries will yield a list of tasks needed.
Whereas all ICS-based approaches listed above, including vObject, would
mean that you
- extract *all* the ics-data from the database, not really knowing if
there is anything relevant in there for the current view
- potentially expand the events in there, manually or through some
methods the libraries expose
- filter the results.
All of this is going to consume much useless time.
So I would suggest you use approach 1, possibly 2 (don't know rrule).
More information about the Python-list