From 8e205c6875072d883a69811c3736293af0ba6c16 Mon Sep 17 00:00:00 2001 From: Moritz Kowalski Date: Wed, 14 May 2025 17:38:07 +0200 Subject: [PATCH] Add darkmode and check for overdraft --- fachschaftslogo.png | Bin 0 -> 35472 bytes main.py | 23 ++++++++++++++-- static/style.css | 35 +++++++++++++++++++++++ templates/base.html | 64 ++++++++++++++++++++++++++++++++----------- templates/index.html | 37 +++++++++++++++++++++---- templates/login.html | 10 +++++-- test.db | Bin 12288 -> 12288 bytes 7 files changed, 141 insertions(+), 28 deletions(-) create mode 100644 fachschaftslogo.png diff --git a/fachschaftslogo.png b/fachschaftslogo.png new file mode 100644 index 0000000000000000000000000000000000000000..921ff89f3dbc6970a7a2db5ecba1e7dea04c32dc GIT binary patch literal 35472 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 V_gk!~{fSI9rw?5==C9|*{}=yCk1YTI literal 0 HcmV?d00001 diff --git a/main.py b/main.py index d1b7947..2c71518 100644 --- a/main.py +++ b/main.py @@ -14,6 +14,8 @@ import uvicorn from sqlalchemy.orm import Session +ADMIN_GROUP = "Fachschaft Admins" + app = FastAPI() app.add_middleware(SessionMiddleware, secret_key="my_secret_key") app.include_router(oidc.router) @@ -32,7 +34,7 @@ def home(request: Request, user: User = Depends(get_current_user), db: Session = if not db_user: raise HTTPException(status_code=404, detail="User nicht gefunden") users = None - if "Fachschaft Admins" in user["groups"]: + if ADMIN_GROUP in user["groups"]: users = db.query(User).all() return templates.TemplateResponse("index.html", {"request": request, "user": user, "users": users, "db_user": db_user}) @@ -42,7 +44,7 @@ def login_form(request: Request): @app.post("/set_money") def set_money(request: Request, username: str = Form(...), money: float = Form(...), db: Session = Depends(get_db), user: User = Depends(get_current_user)): - if not user or "Fachschaft Admins" not in user["groups"]: + if not user or ADMIN_GROUP not in user["groups"]: raise HTTPException(status_code=403, detail="Nicht erlaubt") db_user = db.query(User).filter_by(username=username).first() if not db_user: @@ -53,7 +55,7 @@ def set_money(request: Request, username: str = Form(...), money: float = Form(. @app.post("/drink") def drink(request: Request, db: Session = Depends(get_db), user: User = Depends(get_current_user)): - if not user or "Fachschaft" not in user["groups"]: + if not user or ADMIN_GROUP not in user["groups"]: raise HTTPException(status_code=403, detail="Nicht erlaubt") db_user = db.query(User).filter_by(username=user["preferred_username"]).first() if not db_user: @@ -62,5 +64,20 @@ def drink(request: Request, db: Session = Depends(get_db), user: User = Depends( db.commit() return RedirectResponse(url="/", status_code=303) +@app.post("/payup") +def payup(request: Request, username: str = Form(...), money: float = Form(...), db: Session = Depends(get_db), user: User = Depends(get_current_user)): + if not user or ADMIN_GROUP not in user["groups"]: + raise HTTPException(status_code=403, detail="Nicht erlaubt") + db_user = db.query(User).filter_by(username=username).first() + if not db_user: + raise HTTPException(status_code=404, detail="User nicht gefunden") + db_user.money += money*100 + current_user = db.query(User).filter_by(username=user["preferred_username"]).first() + if not current_user: + raise HTTPException(status_code=404, detail="Aktueller User nicht gefunden") + current_user.money -= money*100 + db.commit() + return RedirectResponse(url="/", status_code=303) + if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000) diff --git a/static/style.css b/static/style.css index 41c05a1..58539ff 100644 --- a/static/style.css +++ b/static/style.css @@ -9,3 +9,38 @@ header { padding: 1em; margin-bottom: 1em; } + +:root { + --goetheblau: rgb(0, 97, 143); + --purple: rgb(134, 0, 71); + --emorot: rgb(179, 6, 44); + --hellgrau: rgb(248, 246, 245); +} + +@media (prefers-color-scheme: dark) { + :root { + --goetheblau: rgb(139, 207, 238); + --purple: rgb(228, 96, 164); + --emorot: rgb(179, 6, 44); + --hellgrau: rgb(77, 75, 70); /* eig. Dunkelgrau */ + } + body { + background: #181a1b; + color: #e0e0e0; + } + header { + background-color: #23272a; + } + main { + background: #23272a; + } + table { + background: #23272a; + color: #e0e0e0; + } + input, select, button { + background: #23272a; + color: #e0e0e0; + border-color: #444; + } +} diff --git a/templates/base.html b/templates/base.html index 7ca5eb0..be0262c 100644 --- a/templates/base.html +++ b/templates/base.html @@ -2,12 +2,13 @@ - {% block title %}Meine Seite{% endblock %} + {% block title %}Getränkeliste{% endblock %}
-

Meine Beispielseite

+ Logo +

Getränkeliste

{% if user %}

Angemeldet als {{ user.preferred_username }}{% if 'Fachschaft Admins' in user.groups %} (Admin){% endif %} – Logout

{% endif %} @@ -20,20 +21,51 @@ {% endif %} {% if 'Fachschaft Admins' in user.groups %}

Admin Interface

-

Users in database:

-
    - {% for db_user in users %} -
  • {{ db_user.username }} ({{ db_user.role }}) - {{ db_user.money / 100 }}
  • - {% endfor %} -
- -

Set user money:

-
- - - -
- {% endif %} +

Ausgleichszahlung:

+

Der eingegebene Betrag wird vom aktuell eingeloggten Nutzer abgezogen und dem eingetragenem Nutzer gutgeschrieben.

+
+ + + + + +
+

Users in database:

+ + + + + + + + + + {% for db_user in users %} + + + + + + {% endfor %} + +
UsernameRoleMoney (€)
{{ db_user.username }}{{ db_user.role }}{{ db_user.money / 100 }}
+

Set user money:

+
+ + + + + +
+ {% endif %} {% endif %} diff --git a/templates/index.html b/templates/index.html index 813cfa7..b8c7222 100644 --- a/templates/index.html +++ b/templates/index.html @@ -3,12 +3,37 @@ {% block content %}

Willkommen, {{ user.name }}!

Dies ist eine einfache geschützte Seite.

-

Aktueller Stand:

-

Du hast {{ db_user.money / 100 }} Euro.

+

Aktueller Kontostand:

+{% if db_user.money > -5000 %} +
+ {{ db_user.money / 100 }} Euro +
+{% else %} +
+ {{ db_user.money / 100 }} Euro +
+ + Bitte begleiche deinen offenen Betrag! + +
+{% endif %} {% if 'Fachschaft' in user.groups %} -

Getränk abziehen

-
- -
+ {% if db_user.money > -5000 %} +
+
+ +
+ + {% else %} +
+
+ +
+ + {% endif %} {% endif %} {% endblock %} diff --git a/templates/login.html b/templates/login.html index a6d25b2..6730f2e 100644 --- a/templates/login.html +++ b/templates/login.html @@ -4,9 +4,13 @@

Login

-
- -
+
+
+ +
+