Go to file
jaschop 776803fc96 Merge pull request 'Add catalan flag' (!77) from HerHde/ki-backend:add-ca-flag into main
Reviewed-on: kompetenzinventar/ki-backend#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.
2023-12-10 19:08:48 +01:00
.reuse replace flags 2022-01-15 17:51:42 +01:00
data Add catalan flag 2023-12-09 21:36:24 +01:00
ki minor cleanups 2023-10-20 16:59:47 +02:00
LICENSES mehr skill icons 2021-10-06 20:45:26 +02:00
migrations Keep alembic from configuring loggers 2022-01-26 23:17:41 +01:00
storage separate storage and data kompetenzinventar/ki-frontend#28 2021-09-20 19:58:42 +02:00
.drone.yml Push image to Gitea registry 2023-12-04 19:51:27 +01:00
.editorconfig make project reuse compliant 2021-07-05 19:37:05 +02:00
.flake8 implement ldap auth 2021-09-15 19:16:45 +02:00
.gitignore make project reuse compliant 2021-07-05 19:37:05 +02:00
.pre-commit-config.yaml availibility 2021-10-04 18:10:31 +02:00
.style.yapf make project reuse compliant 2021-07-05 19:37:05 +02:00
app.py fix code style 2022-02-28 18:48:32 +01:00
docker-compose.yml switch docker-compose to local build 2021-07-28 22:28:34 +02:00
Dockerfile Use Gitea registry for base images 2023-12-04 19:45:08 +01:00
env.dev separate storage and data kompetenzinventar/ki-frontend#28 2021-09-20 19:58:42 +02:00
Pipfile bumped pyyaml version to prevent a ci fail 2023-08-24 16:24:34 +02:00
Pipfile.lock bumped pyyaml version to prevent a ci fail 2023-08-24 16:24:34 +02:00
README.md Use Gitea registry for base images 2023-12-04 19:45:08 +01:00
run_prod.py tune threads to avoid queued tasks in normal situations 2023-08-24 14:25:22 +02:00

Kompetenzinventar Backend

Build Status REUSE status

Ü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

Entwicklung

Abhängigkeiten

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

http://localhost:5000/

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