⚠ Warning: This README is kept in German because the Weißwurst-Event Management System (WEMS) is meant for a German-speaking audience only. Now that I think about it, it isn't even meant for all German-speakers. Please consult Weißwurstäquator for more information and to check if this software is applicable in your region.
Wer kennt sie nicht: die langen, langen Excel-Tabellen zur Berechnung des nächsten Weißwurstkönigs. Blickt da überhaupt noch jemand durch? Und: Wo ist da eigentlich die Management-Summary dazu?
Das Django-basierte Weißwurst-Event Management System (kurz WEMS) löst ab sofort all deine Probleme!
In einer schicken, schlanken Web-UI können du und deine Kollegen Weißwurst-Events eintragen, Teilnahmen protokollieren, den Senf bewerten und automagisch E-Mails erhalten, sobald der nächste dran ist (ja, natürlich mit Fingerzeig!).
Um die Verwaltung so einfach wie möglich zu halten, gibt es kein Berechtigungskonzept. Jeder kann für jeden alles eintragen. Nur das Löschen von Events und Bewertungen und die Anlage von Benutzern, Abteilungen und Räumen ist einem Admin überlassen, der Zugriff auf das Admininterface erhält.
version: "3"
services:
wwtool:
image: ignitedpotato/wems
volumes:
- ./static:/app/static
- ./db:/app/db
ports:
- "127.0.0.1:8000:8000"
environment:
- SECRET_KEY=<insert_key_here>
- WWEMS_URL=http://localhost:8000
- USE_X_FORWARDED_HOST=True
restart: always
# Run
docker-compose up -d
# Create superuser
docker-compose exec wwtool python manage.py createsuperuser
Static files müssen von einem Reverse-Proxy ausgeliefert werden. Dieser muss also entsprechend konfiguriert werden. Im Repository liegen Beispielkonfigurationen für Caddy v1 und v2.
Die favicon.ico muss (wenn für ältere Browser erwünscht) manuell oberhalb von /static abgelegt werden.
Damit das Weißwurst-Event Management System automatisch Erinnerungsmails verschickt, muss ein Cron-Job eingerichtet werden.
Hier ein Beispiel, das stündlich (jeweils 5 Minuten nach der vollen Stunde) prüft, ob Emails zu verschicken sind:
05 * * * * cd /path/to/WEMS/ && docker-compose exec wwtool python manage.py cronjobs
DEBUG
: Aktiviert den Debugmodus und ermöglicht das direkte Hosten mittelspython manage.py runserver
SECRET_KEY
: Muss gesetzt werden, dient der Absicherung von Admin-Sitzungen, Details siehe hierWWEMS_URL
: Vollständige öffentliche URL des Systems (z. B.https://wwtool.test.de/ww
); wird in Emails verwendet und zum Festlegen der ALLOWED_HOSTSUSE_X_FORWARDED_HOST
: NutzeX-Forwarded-Host
-Header anstelle demHost
-Header zur Prüfung der ALLOWED_HOSTS, z. B. bei Verwendung eines Reverse Proxies
Für den Versand von E-Mails existieren die Variablen, die Django zum Mailversand nutzt: https://docs.djangoproject.com/en/3.1/topics/email/#smtp-backend
Zusätzlich:
EMAIL_FROM
: E-Mail-Adresse von der aus verschickt wirdCOUNT_HOST_IMPLICIT
: WennTrue
wird der Host bei Events in der Statistik automatisch mitgezählt. WennFalse
muss er sich selbst auch als Teilnehmer eintragen, um gezählt zu werden. Default:True
- django (https://www.djangoproject.com/)
- Fomantic UI (https://fomantic-ui.com/)
- Chart.js (https://www.chartjs.org/)
- jQuery (https://jquery.com/)
Um das Weißwurst-Event Management System ausführen zu können, werden folgende Pakete benötigt:
- python >= 3.8
- django >= 5.0
- django-environ
- yarn
Beim ersten Start müssen die Datenbank und ein Administratoraccount angelegt werden:
yarn
yarn build
mkdir db
export SECRET_KEY=changeme
python manage.py migrate
python manage.py createsuperuser
Im Anschluss kann das System wie folgt gestartet werden:
export SECRET_KEY=changeme
export DEBUG=True
python manage.py runserver 127.0.0.1:8000
Das Weißwurst-Event Management System ist im Anschluss unter der Adresse http://localhost:8000 verfügbar.
# Build
docker build -t ignitedpotato/wems .
# Run
docker run -d -p 127.0.0.1:8000:8000 --name wems --restart always -v /srv/static:/app/static -v /srv/db:/app/db -e SECRET_KEY=<insert_key_here> -e WWEMS_URL="http://localhost:8000" ignitedpotato/wems:latest
# Create superuser
docker exec -it wems python manage.py createsuperuser
Die Datei WeissWurstTool/settings.py
enthält weitere Möglichkeiten zur Konfiguration des Systems
EMAIL_NEW_EVENT_SUBJECT
: Betreff der Email, die einen neuen zukünftigen Event ankündigtEMAIL_NEW_EVENT_BODY
: Text der Email, die einen neuen zukünftigen Event ankündigtEMAIL_MOD_EVENT_SUBJECT
: Betreff der Email, die die Änderung eines zukünftigen Events ankündigtEMAIL_MOD_EVENT_BODY
: Text der Email, die die Änderung eines zukünftigen Events ankündigtEMAIL_REMINDER_SUBJECT
: Betreff der Email, die das Anlegen eines neuen Events fordertEMAIL_REMINDER_BODY
: Text der Email, die das Anlegen eines neuen Events fordertEMAIL_RATING_SUBJECT
: Betreff der Email, die nach einem Event alle Teilnehmer auffordert eine Bewertung abzugebenEMAIL_RATING_BODY
: Text der Email, die nach einem Event alle Teilnehmer auffordert eine Bewertung abzugebenICS_TEMPLATE
: Template der .ics-Datei, die das System für zukünftige Events zum Download anbietet und auch an Emails hängt.
Folgende Platzhalter stehen für Email-Templates zur Verfügung:
<User Name>
: Voller Name des aktuellen Empfängers<Host Name>
: Voller Name des Hosts des Events<Event Date>
: Datum des Events<Event Time>
: Zeit des Events<Event Room>
: Raum des Events<Event Link>
: Link zum Event<Next Name>
: Nächster Host<Add Link>
: Link zur Anlage-Seite
Danke an Takeaway für das Bild im Header (CC BY-SA 3.0).
Food-Icons erstellt von Those Icons auf Flaticon.