This commit is contained in:
team3
2026-10-08 16:03:27 +02:00
parent 3f12b0742d
commit 93fe2219b9
6 changed files with 94 additions and 25 deletions

View File

@@ -105,7 +105,8 @@ def holen(clip_id, session_id):
def alle(session_id, host=False):
"""Die eigenen Clips; der Host sieht alle — er räumt auf."""
"""Alle Clips, für jeden. Ändern darf nur der Besitzer — und der Host,
der aufräumt; dafür steht an jedem Clip, ob er einem gehört."""
ich = besitzer(session_id)
with connect() as conn:
rows = conn.execute(
@@ -114,11 +115,7 @@ def alle(session_id, host=False):
"LEFT JOIN movies m ON m.id = c.movie_id "
"ORDER BY c.marke_at DESC"
).fetchall()
return [
_oeffentlich(r, session_id, ich)
for r in rows
if host or gehoert_mir(r, session_id, ich)
]
return [_oeffentlich(r, session_id, ich) for r in rows]
def _zeile(conn, clip_id):
@@ -189,10 +186,10 @@ def playback_url(row, vorher=None, dauer=None):
def zeile(clip_id, session_id, host):
"""Die rohe Zeile, wenn man sie sehen darf: Besitzer oder Host."""
"""Die rohe Zeile zum Ansehen — Clips sieht jeder. Ändern und
Löschen prüfen gesondert, ob es der Besitzer oder der Host ist."""
with connect() as conn:
row = _zeile(conn, clip_id)
return row if _darf(row, session_id, host) else None
return _zeile(conn, clip_id)
async def schneiden(clip_id, session_id, host):

View File

@@ -116,11 +116,12 @@ def test_taste_c_nimmt_den_film_der_laufenden_aufnahme(client, zuschauer, hostmo
assert marke(client)["movie_id"] == film(3)
def test_fremde_sehen_nichts_der_host_alles(client, client2, zuschauer, hostmodus):
def test_alle_sehen_clips_aendern_nur_besitzer_und_host(client, client2, zuschauer, hostmodus):
m = marke(client)
assert [c for c in client2.get("/api/clips").json() if c["id"] == m["id"]] == []
fremd = [c for c in client2.get("/api/clips").json() if c["id"] == m["id"]]
assert len(fremd) == 1 and fremd[0]["mine"] is False
assert client2.patch(f"/api/clips/{m['id']}", json={"titel": "x"}).status_code == 404
assert client2.get(f"/api/clips/{m['id']}/video").status_code == 404
assert client2.delete(f"/api/clips/{m['id']}").status_code == 404
hostmodus(zuschauer)
assert zuschauer.patch(f"/api/clips/{m['id']}", json={"titel": "Vom Host"}).json()["titel"] == "Vom Host"
assert zuschauer.get("/api/clips").json()[0]["id"] == m["id"]