feat(mangel): Leitungsverantwortliche dürfen Mangel-Status ändern/erledigen
CI / backend-tests (push) Failing after 1m40s
CI / frontend-build (push) Successful in 17s

Nutzer-Entscheidung: Status ändern/Erledigen bleibt nicht nur Materialverant-
wortlichen+Admin vorbehalten, Leitungsverantwortliche gehören ebenfalls dazu.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
This commit is contained in:
2026-09-05 13:42:28 +02:00
co-authored by Claude Sonnet 5
parent e9904d5bea
commit 8fbb356c34
4 changed files with 67 additions and 3 deletions
+3 -1
View File
@@ -21,7 +21,9 @@ _mitarbeiter_plus = require_roles(
RolleTyp.leitungsverantwortlicher,
RolleTyp.administration,
)
_materialverantwortliche = require_roles(RolleTyp.administration, RolleTyp.materialverantwortlicher)
_materialverantwortliche = require_roles(
RolleTyp.administration, RolleTyp.materialverantwortlicher, RolleTyp.leitungsverantwortlicher
)
@router.get("/maengel", response_model=list[MangelRead])
+30
View File
@@ -113,3 +113,33 @@ async def test_niedrige_prioritaet_blockiert_einsatzbereitschaft_nicht(
"/api/v1/dashboard/einsatzbereitschaft", headers=auth_header(verantwortlicher_token)
)
assert response.json()["einsatzbereit"] == 1
@pytest.mark.asyncio
async def test_leitungsverantwortlicher_kann_status_aendern(client, objekt_mit_position, mitarbeiter_user, db_session):
from app.core.security import hash_password
from app.models.auth import Benutzer, BenutzerRolle, RolleTyp
benutzer = Benutzer(
name="Test Leitung", login="leitung1", passwort_hash=hash_password("test-passwort-123"), aktiv=True
)
db_session.add(benutzer)
await db_session.flush()
db_session.add(BenutzerRolle(benutzer_id=benutzer.id, rolle=RolleTyp.leitungsverantwortlicher))
await db_session.flush()
objekt, _material = objekt_mit_position
mitarbeiter_token = await login(client, "mitarbeiter1")
gemeldet = await client.post(
"/api/v1/maengel",
json={"objekt_id": objekt.id, "beschreibung": "Scheinwerfer defekt"},
headers=auth_header(mitarbeiter_token),
)
mangel_id = gemeldet.json()["id"]
leitung_token = await login(client, "leitung1")
response = await client.patch(
f"/api/v1/maengel/{mangel_id}", json={"status": "erledigt"}, headers=auth_header(leitung_token)
)
assert response.status_code == 200
assert response.json()["status"] == "erledigt"