User Documentation

django-calingen is a pluggable Django application intended to generate paper-based calendar pages to be used with analogous calendars. It provides the means to manage and include (user-provided) events into the generated calendar pages. Additionally it provides a plugin API with the ability to provide events, layouts and compilers as external plugins.

Note

Because django-calingen is just a Django application, the actual offered set of features is limited by what the project’s host choose to offer - or specifically: How the project is configured.

Warning

This user documentation refer to certain parts of the app under their default name. Whenever the documentation mentions “head to [somewhere]” or “click [something]”, this assumes the default templates and default configuration of views.

Please try your best to find the appropriate link/button. These are customizable by the project and may use other texts or formats.

If you’re hosting django-calingen yourself, you may want to visit the administrator documentation. And if you feel like something important is missing: django-calingen is open source software and uses GitHub to host the source code and project management tools, including the issue tracker. If you want to get your own hands dirty, there is developer documentation included aswell.

Your Profile

Your app-specific profile is tied to your Django user account (that is: the account you use to log into the website). You may have exactly one profile, as it serves as the central facility for app-specific settings and reference for user-provided events.

Choosing External Event Providers

Your site’s administrator may include so called EventProviders as plugins and make them available to users to be selected in their profile.

Note

The original idea of these EventProviders was: “Make (national) holidays available”.

But the actual plugin interface is really generic. Basically, all types of events can be provided by an implementation of the Event Provider Interface.

On your profile’s settings page, you will see a list of available Event Providers.

You may choose one or several of them by activating the respective checkbox and hit the button to save your changes.

Note

While you may choose as many of these providers as you like, please be aware that the actual generated calendar pages will only include each distinct entry once.

Example: If you choose ProviderA and ProviderB, which both include May, 4th as "Star Wars Day" of type "Holiday", the day will be marked as "Star Wars Day" one time in the generated output.

On the other hand, if ProviderA includes May, 4th as "Star Wars Day" and ProviderB includes May, 4th as "May the Force be with you!", both of them will be included in your generated output.

Important

May the Force be with you!

Adding Events

By adding user-defined events to your profile, you may include them in your generated output.

Hit the Add Event page and fill out the presented form, hit the button to save your changes. You’re done. The event will now be included in your calendar pages, once you generate them.

Event Category

As of now, django-calingen includes only two categories of events to choose from:

  • Holidays

  • Annual Anniversaries

Internally, both are treated identically: They are assumed to be events with a yearly recurrence. However, layouts may choose to handle these types differently, i.e. by putting them on different spots in the generated output.

Note

Adding more different types of events is on the developer’s ToDo list.

Event Title

Most likely, this is what will be included in the generated output.

The maximum length is capped at 50 characters. This is a design choice to force user’s to provide meaningful titles to their events, that will actually fit into generated outputs of any type/format/orientation.

Event Start

Note

Don’t be irritated by the name start. As stated above, adding more types of events is on the developer’s ToDo list, including a generalized type to allow any reccurence of events. Meaning: in a future release there may the an Event End option to events.

This is actually the date/time of the event.

For the event types Holiday and Annual Anniversary, the time-part of this may be left empty.

Generate Calendar Inlays

This is what you came for, isn’t it?

Ok, let’s get this straight: This documentation will most likely not answer all questions regarding the generation of calendar inlays, as this is the part of the application that may differ widely, based on the actual installed layouts and the provided compiler.

These parts are configured / provided by the app’s deployment in the context of a Django project and are highly customizable by the administrator.

General Description

Choose a Layout and Select the Year

Once you configured your profile, head to Render Layout.

You will be presented with a form, containing a field to enter your desired Year (that is: the year to generate the layout for) and a list of available layouts. Pick one and proceed.

Warning

The availability of layouts is dependent on the Django project’s configuration. Your administrator will choose which layouts are provided by activating them in the project’s settings.

Note

If you’re hosting django-calingen yourself, you may find additional information regarding installation and setup of layouts in this document: Layouts.

[Optional] Layout-specific Configuration

Layouts may choose to expose certain configuration options to the user. If your chosen layout provides those options, you are presented with another form.

User-provided configuration will be skipped automatically, if the chosen layout doesn’t accept user configuration. In this case, you’re directly redirected to the generated output, depending on the project’s configured compiler.

Compilation of the Output

In the background, the application will now fetch your events (user-provided and plugin-provided), process the selected layout to generate source code for the compiler and compile the source to generate the actual output.

If you are a non-Tech-person: This is where the magic happens! (:

Depending on the compiler, you may be presented with the result directly in your browser window or a download is provided.

Congratulations, you have completed the whole process of generating calendar inlays with django-calingen.