(/'zɔʐa/ ZAW-zha - Polish for aurora)
An informational website for schools with an advanced timetable interface.
- View class, group, teacher, classroom timetables
- Set a default timetable for easy repeated access
- Find out about upcoming schedule changes, cancelled lessons and teacher substitutions
- Fast experience - minimal use of JavaScript and good caching
- No registration - everything works without user accounts
- Use on any device - fully responsive design
- Check which classrooms are occupied at a given time
- Access school documents and files quickly
- Not a student information system, but can be complementary to one
- See remaining break time and substitutions also on a publicly installed screen
Install Python 3.5 or later and set up a Python virtual environment, then
install Django 2.2.5 or later (you can use pip install -r requirements.txt
).
Now you can git clone
the repository.
You will need to create a zorza/localsettings.py
file and set DEBUG
,
SECRET_KEY
, LANGUAGE_CODE
, TIME_ZONE
.
The root (/
) url is an alias for /pages/home/
, which is a Django flatpage. Create a flatpage with the URL /home/
in Django administration (/admin/
), otherwise you will get a 404. You have to create an account first with ./manage.py createsuperuser
.
In the footer there is a link to the flatpage with URL /about/
.
Populating the timetable database should be done by scripts. The zorza_scripts
repository is a collection of scripts for importing timetables generated by aSc TimeTables and tailoring the database for a specific usecase.
Very basic example timetable and flatpage data can be loaded by ./manage.py loaddata fixtures/demo.json
.
For a production setup, consult https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ and https://docs.djangoproject.com/en/2.2/howto/deployment/ .
The directories mediafiles
, staticfiles
, and favicons have to be served directly by the web server. Example nginx configuration for that:
location /media {
alias /sites/zorza/mediafiles;
}
location /static {
alias /sites/zorza/staticfiles;
}
location ~ ^/(android|apple-touch-icon|browserconfig|favicon|manifest|safari)(.*)\.(png|xml|ico|json|svg)$ {
root /sites/zorza/staticfiles/favicons;
}
This software is designed with response caching in mind because the content is mostly static and by nature not requiring urgent updates. Set CACHE_MIDDLEWARE_SECONDS
in localsettings.py
and configure your web server for response caching.
The page /timetable/display/
displays remaining break/period time and teacher substitutions. It's intended to be run fullscreen in a browser on a public big screen.
Use browser zoom to make it look right.
Custom admin commands (see ./manage.py COMMAND --help
):
uploaddir
- uploads a directory of files to a categorycleanup
- removes old substitutions etc.
To access substitution editing forms or the calendar (DayPlan formset) the user needs the add_substitution
or add_dayplan
permission respectively.
To access Django Admin is_staff
is needed, as is normal with Django.
After timetable changes or group changes in real world, such that teacher/class/group ids saved in the default timetable cookie correspond to a different thing than before, you must increment/add the integer TIMETABLE_VERSION
in localsettings.py
. Otherwise you risk default timetables being wrong or 404s.
This project is licensed under AGPLv3.
The header image is a modified photograph by Simo "Ximonic" Räsänen and is available under CC BY-SA 3.0.
The logo font is Raleway.
This project includes medium-editor by Davi Ferreira (http://www.daviferreira.com) licensed under the MIT license.
See CONTRIBUTING.md