diff --git a/app/controllers/aaManager.py b/app/controllers/aaManager.py index 18d96e8..97a3531 100644 --- a/app/controllers/aaManager.py +++ b/app/controllers/aaManager.py @@ -66,7 +66,12 @@ def change_accessauth(*, db: Session = Depends(get_session), aa_id: int, aa: Acc db_aa = db.get(AccessAuthorizationDB, aa_id) if db_aa is None: raise HTTPException(status_code=404, detail="AccessAuthorization not found") - aa_data = aa.dict(exclude_unset=True) + aa_data = aa.model_dump(exclude_unset=True) + if "timetables" in aa_data and aa_data["timetables"] is not None: + db_aa.timetables.clear() + timetables = [Timetable.model_validate(t) for t in aa_data["timetables"]] + db_aa.timetables = timetables + aa_data.pop("timetables") db_aa.sqlmodel_update(aa_data) return add_and_refresh(db, db_aa) diff --git a/test/test_services/test_aa_manager.py b/test/test_services/test_aa_manager.py index 3d655b9..5f5566d 100644 --- a/test/test_services/test_aa_manager.py +++ b/test/test_services/test_aa_manager.py @@ -147,6 +147,11 @@ def test_update_access_auth_with_timetables(client, auth_headers, test_aa): headers=auth_headers ) assert response.status_code == 200 + jresponse = response.json() + assert len(jresponse["timetables"]) == 1 + assert jresponse["timetables"][0]["weekday"] == 5 + assert jresponse["timetables"][0]["starttime"] == "10:00:00" + assert jresponse["timetables"][0]["duration"] == 120 def test_update_nonexistent_access_auth(client, auth_headers):