Skip to content
A calendaring app for Django. It is now stable, Please feel free to use it now. Active development has been taken over by bartekgorny.
Python CSS HTML JavaScript
Latest commit 0bd4bb3 Apr 16, 2016 @bartekgorny bartekgorny Merge pull request #55 from CKiilu/master
Update contenttypes from generic to fields



A calendaring/scheduling application, featuring:

  • one-time and recurring events
  • calendar exceptions (occurrences changed or cancelled)
  • occurrences accessible through Event API and Period API
  • relations of events to generic objects
  • ready to use, nice user interface
  • view day, week, month, three months and year
  • project sample which can be launched immediately and reused in your project

See see wiki page for more.


Download the code; put in into your project’s directory or run

python install
to install system-wide.

REQUIREMENTS: python-vobject (comes with most distribution as a package).






This setting determines which day of the week your calendar begins on if your locale doesn’t already set it. Default is 0, which is Sunday.


This setting controls the behavior of :func:`Views.get_next_url`. If set, all calendar modifications will redirect here (unless there is a `next` set in the request.)


This setting controls the behavior of :func:`Period.classify_occurence`. If True, then occurences that have been cancelled will be displayed with a css class of canceled, otherwise they won’t appear at all.

Defaults to False


This setting controls the callable used to determine if a user has permission to edit an event or occurance. The callable must take the object and the user and return a boolean.


check_edit_permission(ob, user):
return user.is_authenticated()

If ob is None, then the function is checking for permission to add new events


This setting controls the callable that gets all events for calendar display. The callable must take the request and the calendar and return a `QuerySet` of events. Modifying this setting allows you to pull events from multiple calendars or to filter events based on permissions


get_events(request, calendar):
return calendar.event_set.all()

Something went wrong with that request. Please try again.