Management software for organizing an orientation week at university.
Clone or download
Latest commit 3a0ab3f Jan 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
clothing change icon names to fontawesome 5 style Jan 11, 2019
dashboard change icon names to fontawesome 5 style Jan 11, 2019
exam change icon names to fontawesome 5 style Jan 11, 2019
logo Add files via upload Oct 26, 2018
ophasebase replace github icon by html since fontawesome 5 uses a different pref… Jan 11, 2019
pyophase fix template name Jan 19, 2019
requirements Pinned mysqclient version to below 1.4 Jan 19, 2019
script change update script to splitted requirements #235 Dec 30, 2018
staff fix var name Jan 12, 2019
students change icon names to fontawesome 5 style Jan 11, 2019
website fix typo in icon name Jan 10, 2019
workshops change icon names to fontawesome 5 style Jan 11, 2019
.coveragerc remove test files from coverage calculation Oct 18, 2018
.gitignore frontend dependency management: switched from bower to pure npm Jun 24, 2017
.importanizerc organize imports Aug 25, 2016
.travis.yml change .travis settings for splitted requirements #235 Dec 30, 2018 documentation for workshops app Jul 12, 2016
LICENSE-AGPL.txt Addet AGPL License to the project. Fixes #11 Jul 16, 2015 Update Oct 26, 2018 Added commit id to Feb 9, 2017 organize imports Aug 25, 2016
package-lock.json change fontawesome resources to fontawesome 5 Jan 11, 2019
package.json change fontawesome resources to fontawesome 5 Jan 11, 2019
requirements.txt migrate to bootstrap 4 Jan 9, 2019



Build Status Updates Coverage Status

pyophase is our management application used for organizing an introductory week for new students. Such an introductory week is called Ophase.


Some Notes

Please keep the following things in mind:

  • Objects which are relevant for only one Ophase should have a foreign key referring to this Ophase. This allows deleting all data associated to a specific Ophase by removing this single object.
  • Create and commit migrations after the database scheme changed (e.g. model changes). ./ makemigrations
  • Recreate, (maybe translate) and commit message files after a string is introduced or changed. cd changed-app && ../ makemessages
  • From time to time, look for new versions of the dependencies, listed in requirements.txt and package.json, test them and commit updated files.
  • When new major functionality is introduced, briefly explain it in

Development Setup

A quick development setup is usually easier than a full deployment. Just do the following to get a local instance running.

git clone THIS_REPO
cd pyophase
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
npm install
./ compilemessages
./ migrate
./ createsuperuser
./ runserver



  • Install python3, python3-pip, virtualenv and npm
  • Maybe create a user for the WSGI applications (e.g. pyophase)
  • Clone this repository into a proper directory (e.g. /srv/pyophase)
  • Create MySQL database and proper user
  • Create the file pyophase/ and fill it with the credentials needed in
  • Create a virtualenv (e.g. virtualenv -p python3 venv)
  • For serving WSGI applications, one can install uwsgi, create an ini file under /etc/uwsgi with a proper configuration and configure the webserver to use mod-proxy-uwsgi to make the application accessible. The webserver should also serve the static files. Make sure the application server (uwsgi) sets the proper environment variable for production settings (DJANGO_SETTINGS_MODULE=pyophase.settings_production).
  • Run all the relevant commands from the Updates section


When manually executing commands in production, do not forget to either pass the --settings pyophase.settings_production flag oder set it as an environment variable like export DJANGO_SETTINGS_MODULE=pyophase.settings_production.

To update an instance of pyophase, one can use the included update script script/update.

For production instances, one should use something like sudo -u pyophase script/update --prod.


A documentation (in German) for users of pyophase is available in

Data Privacy

During the organizational work, it is unavoidable to store certain data, some of which is related to individual persons. pyophase is designed in a way such that it is easy to delete all the data after it is no longer needed. The head of Ophase is told to delete this data as early as possible.


Files in pyophase are licensed under the Affero General Public License version 3, the text of which can be found in LICENSE-AGPL.txt, or any later version of the AGPL, unless otherwise noted.