jaschop
776803fc96
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #77 > Anything else to consider? I didn't know myself, but it was interesting to find out. No, this should work as soon as deployed. Catalan already exists in the language DB, and the existance of ca.svg is already tested whenever a catalan icon is requested. |
||
---|---|---|
.reuse | ||
data | ||
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