VideoAG Website Backend API
Dies ist die API der VideoAG Website. Sie ist in Python basierend auf Flask und uWSGI geschrieben.
Entwicklung
Zum lokalen Testen wird am besten Docker verwendet. Wenn Docker installiert ist, einfach docker compose up --build
ausführen und
die API sollte laufen. (Wenn die nötigen Dependencies installiert sind, sollte man auch direkt, ohne Docker,
docker_start.sh
ausführen können)
Wenn du Probleme mit 403 Errors hast, sind wahrscheinlich die Berechtigungen deiner Ordner nicht richtig angepasst. Damit der Docker Container funktionieren kann, muss für die "Other" Gruppe jeder Ordner (Auch der Projekt ordner selbst!) das Execute Bit und jede Datei das Read bit gesetzt haben.
Es wird ein nginx Server gestartet, welcher unter localhost:5000
verfügbar ist, und eine uWSGI Instanz welche die API
über den nginx unter localhost:5000/api
zur Verfügung stellt. Zur Entwicklung ist es auch sinnvoll das
Frontend zu starten. Wenn dieses auf localhost:3000
verfügbar ist,
stellt der nginx dieses unter localhost:5000/modern
zur Verfügung (Auf das Frontend muss so indirekt zugegriffen werden,
da es erwartet, dass die API unter derselben Domain/Port verfügbar ist).
Im Debug Modus (DEBUG=True
in der Config) sind die Logindaten: Nutzer: videoag
Passwort: videoag
Hinweis: In der Datenbank tauchen manchmal Warnungen auf, dass keine Transaktion am Laufen ist. Dies liegt daran, dass wir immer ein ROLLBACK machen, wenn es irgendwelche Probleme gegeben hat damit die nächste Transaktion einwandfrei läuft.
Unittests
Test laufen auch über docker und können mit run_tests.sh
gestartet werden.
Zum Mitmachen:
- Repo für den eigenen User forken, dafür den "Fork-Button" auf der Website verwenden
- Sicherstellen, dass der Upstream richtig konfiguriert ist:
Link Origin stellt hier euren User da, Upstream das Original der Gruppe videoag - Erstellt euch eine eigene Branch, diese könnt ihr nennen wie ihr wollt, entweder nach der Änderung oder eurem Namen (git branch username), danach switched ihr in diese Branch (git checkout username)
- Die Initialisierung ist unter "Zum Testen" bereits erklärt worden
- Änderungen machen, committen, upstream mergen (git fetch upstream; git merge upstream/master)
- Ins eigene Repo pushen (git push)
- Pull-Request an uns, dazu unter "Merge-Requests" einmal auf "New Merge Request" und das Private Repo auswählen; oder ihr geht auf euer privates repo, da taucht dann eine Benachrichtigung über einen möglichen Merge-Request auf
- Warten
- Wir mergen die Änderungen