|
||
---|---|---|
.reuse | ||
data | ||
instance/storage | ||
ki | ||
LICENSES | ||
migrations | ||
storage | ||
.drone.yml | ||
.editorconfig | ||
.flake8 | ||
.gitignore | ||
.pre-commit-config.yaml | ||
.style.yapf | ||
app.py | ||
docker-compose.yml | ||
Dockerfile | ||
env.dev | ||
Pipfile | ||
Pipfile.lock | ||
README.md | ||
run_prod.py |
Kompetenzinventar Backend
Über
Dieses Repo enthält das Backend des Projekts Kompentenzinventar - einer Webapplikation zur Erfassung von Userprofilen für die WTF eG.
Implementiert ist das Backend mit Flask.
Mitmachen
Du kannst gerne bei der Entwicklung des Kompetenzinventars mitmachen.
- Fehler oder fehlende Funktionen erfassen. Bitte direkt über die Issues in Gitea.
- Dokumentation oder Implementierung verbessern. Bitte forke hierzu das Projekt, branche von
main
ab und erstelle dann einen Pull Request.
Kommunikation
Folgende Kanäle gibt es für die Kommunikation über das Kompetenzinventar:
- Die Issues im WTF Gitea.
- Den Bereich AG Entwicklung im WTF Forum.
- Einen Raum in Matrix. Zutritt per Einladung, frlan lädt ein, eine einfache PN im Forum reicht.
Repos
- ki-backend (dieses Repo) enthält das Backend
- ki-frontend enthält das Frontend
- Weitere Repositories befinden sich in der Gitea Organisation Kompetenzinventar.
Entwicklung
Abhängigkeiten
- Python 3.8
- Pipenv
Entwicklungsumgebung aufbauen und starten
Ggf. vorher aufräumen
rm storage/ki.sqlite
cp env.dev .env
pipenv install --dev
pipenv shell
flask db upgrade
flask seed --dev
flask run
pre-commit einrichten
Damit mensch nicht verpeilt kaputten Code Style zu commiten, kann pre-commit benutzt werden. Einmal im Virtualenv ausführen:
pre-commit install
alembic
Befehle
alembic
ist über Flask-Migrate eingebunden.
Es wird über flask db ...
aufgerufen.
QA
python -m unittest discover ki
# Code formatieren
yapf -i --recursive ki/
# Code-Style prüfen
flake8
Testbenutzer
Lokal ohne LDAP
Für ein Login ohne LDAP werden die Benutzer aus der auth.yml
benutzt.
Lokal mit LDAP
Einen LDAP Server aufsetzen. Z.B. https://directory.apache.org/apacheds/
In der .env
die LDAP Dinge ausfüllen (siehe env.dev
).
Beispiel-Requests
Beispiele brauchen curl und jq.
curl -s \
-D "/dev/stderr" \
http://localhost:5000/skills?search=ph | jq
curl -s \
-D "/dev/stderr" \
http://localhost:5000/languages?search=fr | jq
curl -s \
-D "/dev/stderr" \
-X POST \
-H "Content-Type: application/json" \
-d '{"username": "peter", "password": "geheim"}' \
http://localhost:5000/users/login | jq
curl -s \
-D "/dev/stderr" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 22e6c5fc-8a5a-440e-b1f4-018deb9fd24e" \
-d '{"pronouns": "Herr Dr. Dr."}' \
http://localhost:5000/users/1/profile | jq
curl -s \
-D "/dev/stderr" \
-H "Authorization: Bearer 22e6c5fc-8a5a-440e-b1f4-018deb9fd24e" \
http://localhost:5000/users/1/profile
Profilsuche nach Nickname:
curl -s \
-D "/dev/stderr" \
-H "Authorization: Bearer 22e6c5fc-8a5a-440e-b1f4-018deb9fd24e" \
http://localhost:5000/users/profiles
Docker
Image bauen
docker build --tag ki_backed .
Container starten
Im Beispiel wird die SQLite Datenbank ./data/ki_backend.sqlite
verwendet.
DB-Datei anlegen
touch data/ki_docker.sqlite
chmod a+rw data/ki_docker.sqlite
Container starten
docker run \
--name=ki_backend \
-v ${PWD}/data/ki_docker.sqlite:/app/data/ki_docker.sqlite \
-e SQLALCHEMY_DATABASE_URI='sqlite:///data/ki_docker.sqlite' \
-p 5000:5000 \
ki_backend
Skills und Sprachen importieren
docker exec ki_backend sh -c "cd /app && /pyroot/bin/flask seed"
Produktionsumgebung
Für die Produktionsumgebung wird waitress benutzt.
run_prod.py
führt die DB Migrationen aus und startet den Server.
Integrationsumgebung
Per docker-compose
kann eine Integrationsumgebung gestartet werden.
Beide Projekte müssen nebeneinander ausgecheckt sein:
./
ki-backend
ki-frontend
Alles starten:
docker-compose up
Dann http://localhost:13337 aufrufen.
Lizenzen
Dieses Projekt erfüllt die REUSE Spezifikation.
Die Lizenzen aller Dateien im Projekt können mit diesem Kommando aufgelistet werden:
reuse spdx