Skip to content
This repository has been archived by the owner on Feb 12, 2022. It is now read-only.
/ pyophase Public archive

Management software for organizing an orientation week at university.

License

Notifications You must be signed in to change notification settings

d120/pyophase

Repository files navigation

pyophase

pyophase

Build Status Coverage Status

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

Development

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). ./manage.py makemigrations
  • Recreate, (maybe translate) and commit message files after a string is introduced or changed. cd changed-app && ../manage.py 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 DOCUMENTATION.md.

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
./manage.py compilemessages
./manage.py migrate
./manage.py createsuperuser
./manage.py runserver

The Single Sign On (SSO) of the TU Darmstadt only allows https redirects. A development server with ssl support can be started by using the runsslserver command instead ofrunserver.

Deployment

Installation

  • Install python3, python3-pip, virtualenv, pdflatex (for nametag and certificate generation) 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/settings_secrets.py and fill it with the credentials needed in settings_production.py
  • 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

Updates

When manually executing manage.py 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.

Usage

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

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.

License

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.