update
This commit is contained in:
@@ -13,6 +13,7 @@ from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from . import (
|
||||
backup,
|
||||
punkte,
|
||||
db,
|
||||
events,
|
||||
features,
|
||||
@@ -364,8 +365,9 @@ def mitglied(sid):
|
||||
return ich
|
||||
|
||||
|
||||
# Der letzte Dreh, damit eine Seite mitten in der Animation nachziehen kann
|
||||
letzter_dreh = {"ergebnis": None, "start": 0.0}
|
||||
# Der letzte Dreh, damit eine Seite mitten in der Animation nachziehen
|
||||
# kann — samt Anwesenheit der Runde, die beim Eintragen am Abend landet
|
||||
letzter_dreh = {"ergebnis": None, "start": 0.0, "teilnehmer": []}
|
||||
|
||||
|
||||
@app.get("/api/events")
|
||||
@@ -394,6 +396,7 @@ def drehen():
|
||||
|
||||
letzter_dreh["ergebnis"] = ergebnis
|
||||
letzter_dreh["start"] = time.monotonic()
|
||||
letzter_dreh["teilnehmer"] = suggestions.teilnehmer()
|
||||
events.senden("spin", ergebnis)
|
||||
return {"started": True, **ergebnis}
|
||||
|
||||
@@ -418,6 +421,7 @@ def liste_vorschlaege(response: Response, filmabend_sid: str | None = Cookie(Non
|
||||
sid = sitzung(response, filmabend_sid)
|
||||
eintraege = suggestions.alle()
|
||||
ich = users.besitzer(sid)
|
||||
dabei = suggestions.dabei_alle()
|
||||
return {
|
||||
"items": [
|
||||
{k: v for k, v in e.items() if k not in ("session_id", "user_id")}
|
||||
@@ -428,9 +432,22 @@ def liste_vorschlaege(response: Response, filmabend_sid: str | None = Cookie(Non
|
||||
(e["id"] for e in eintraege if users.gehoert_mir(e, sid, ich)),
|
||||
None,
|
||||
),
|
||||
# Wer ohne Vorschlag dabei ist
|
||||
"dabei": [d["name"] or "Anonym" for d in dabei],
|
||||
"dabei_mine": any(users.gehoert_mir(d, sid, ich) for d in dabei),
|
||||
}
|
||||
|
||||
|
||||
@app.post("/api/dabei")
|
||||
def dabei(response: Response, filmabend_sid: str | None = Cookie(None)):
|
||||
"""Dabei ohne Vorschlag — an oder wieder aus."""
|
||||
sid = sitzung(response, filmabend_sid)
|
||||
mitglied(sid)
|
||||
steht = suggestions.dabei_umschalten(sid)
|
||||
events.senden("suggestions")
|
||||
return {"dabei": steht}
|
||||
|
||||
|
||||
@app.post("/api/suggestions")
|
||||
async def vorschlagen(
|
||||
response: Response,
|
||||
@@ -595,8 +612,10 @@ def vergessen(
|
||||
@app.get("/api/users")
|
||||
def runde(response: Response, filmabend_sid: str | None = Cookie(None)):
|
||||
sid = sitzung(response, filmabend_sid)
|
||||
staende = punkte.alle()
|
||||
leer = punkte.stand(0)
|
||||
return {
|
||||
"items": users.alle(),
|
||||
"items": [{**u, **staende.get(u["id"], leer)} for u in users.alle()],
|
||||
"mine": users.aktuell(sid),
|
||||
"host": users.ist_host(sid),
|
||||
}
|
||||
@@ -739,17 +758,45 @@ def name_waehlen(
|
||||
@app.get("/api/watched")
|
||||
def liste_gesehen(response: Response, filmabend_sid: str | None = Cookie(None)):
|
||||
sid = sitzung(response, filmabend_sid)
|
||||
return watched.alle(sid)
|
||||
return watched.alle(sid, users.ist_host(sid))
|
||||
|
||||
|
||||
@app.post("/api/watched")
|
||||
async def als_gesehen(movie_id: int = Body(..., embed=True)):
|
||||
"""Der Host trägt ein, was am Abend lief."""
|
||||
"""Der Host trägt ein, was am Abend lief. Ist es der gezogene Film,
|
||||
hängt die Runde vom Rad als Anwesenheit am Abend."""
|
||||
eintrag = watched.markieren(await film_holen(movie_id))
|
||||
gezogen = letzter_dreh["ergebnis"]
|
||||
if gezogen and gezogen["gewinner"]["movie_id"] == movie_id and letzter_dreh["teilnehmer"]:
|
||||
watched.dabei_setzen(eintrag["id"], letzter_dreh["teilnehmer"])
|
||||
events.senden("watched")
|
||||
return eintrag
|
||||
|
||||
|
||||
@app.post("/api/watched/{watched_id}/dabei")
|
||||
def dabei_aendern(watched_id: int, user_ids: list[int] = Body(..., embed=True)):
|
||||
"""Der Host berichtigt, wer dabei war — etwa wer spät kam."""
|
||||
watched.dabei_setzen(watched_id, user_ids)
|
||||
events.senden("watched")
|
||||
return {"dabei": user_ids}
|
||||
|
||||
|
||||
@app.post("/api/watched/hearts")
|
||||
def herz_setzen(
|
||||
response: Response,
|
||||
note_id: int = Body(..., embed=True),
|
||||
filmabend_sid: str | None = Cookie(None),
|
||||
):
|
||||
"""Ein Klick setzt das Herz, der nächste nimmt es zurück."""
|
||||
sid = sitzung(response, filmabend_sid)
|
||||
mitglied(sid)
|
||||
steht = watched.herz(sid, note_id)
|
||||
if steht is None:
|
||||
raise HTTPException(status_code=404, detail="Kommentar nicht gefunden")
|
||||
events.senden("watched")
|
||||
return {"hearted": steht}
|
||||
|
||||
|
||||
@app.delete("/api/watched/{watched_id}")
|
||||
def gesehen_entfernen(watched_id: int):
|
||||
entfernt = watched.entfernen(watched_id)
|
||||
|
||||
Reference in New Issue
Block a user