|
@@ -54,30 +54,8 @@ async def person_list(request: Request):
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
-# ── person detail ────────────────────────────────────────────────────
|
|
|
|
|
-
|
|
|
|
|
-@router.get("/dashboard/persons/{person_id}", response_class=HTMLResponse)
|
|
|
|
|
-async def person_detail(request: Request, person_id: str):
|
|
|
|
|
- person = await _get_one_person(person_id)
|
|
|
|
|
- if not person:
|
|
|
|
|
- return RedirectResponse("/dashboard/persons", status_code=303)
|
|
|
|
|
- return templates.TemplateResponse(
|
|
|
|
|
- request, "person-detail.html",
|
|
|
|
|
- {"person": person},
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-# ── add person (form) ────────────────────────────────────────────────
|
|
|
|
|
-
|
|
|
|
|
-@router.get("/dashboard/persons/new", response_class=HTMLResponse)
|
|
|
|
|
-async def person_add_form(request: Request):
|
|
|
|
|
- return templates.TemplateResponse(
|
|
|
|
|
- request, "person-form.html",
|
|
|
|
|
- {"person": None, "action": "add"},
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
# ── add person (submit) ──────────────────────────────────────────────
|
|
# ── add person (submit) ──────────────────────────────────────────────
|
|
|
|
|
+# Must be BEFORE /dashboard/persons/{person_id}
|
|
|
|
|
|
|
|
@router.post("/dashboard/persons", response_class=HTMLResponse)
|
|
@router.post("/dashboard/persons", response_class=HTMLResponse)
|
|
|
async def person_add_submit(
|
|
async def person_add_submit(
|
|
@@ -116,20 +94,34 @@ async def person_add_submit(
|
|
|
return RedirectResponse("/dashboard/persons", status_code=303)
|
|
return RedirectResponse("/dashboard/persons", status_code=303)
|
|
|
|
|
|
|
|
|
|
|
|
|
-# ── edit person (form) ───────────────────────────────────────────────
|
|
|
|
|
|
|
+# ── add person (form) ────────────────────────────────────────────────
|
|
|
|
|
+# Must be BEFORE /dashboard/persons/{person_id} so "new" is not captured
|
|
|
|
|
|
|
|
-@router.get("/dashboard/persons/{person_id}/edit", response_class=HTMLResponse)
|
|
|
|
|
-async def person_edit_form(request: Request, person_id: str):
|
|
|
|
|
|
|
+@router.get("/dashboard/persons/new", response_class=HTMLResponse)
|
|
|
|
|
+async def person_add_form(request: Request):
|
|
|
|
|
+ return templates.TemplateResponse(
|
|
|
|
|
+ request, "person-form.html",
|
|
|
|
|
+ {"person": None, "action": "add"},
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+# ── person detail ────────────────────────────────────────────────────
|
|
|
|
|
+
|
|
|
|
|
+@router.get("/dashboard/persons/{person_id:str}", response_class=HTMLResponse)
|
|
|
|
|
+async def person_detail(request: Request, person_id: str):
|
|
|
|
|
+ if person_id == "new":
|
|
|
|
|
+ return RedirectResponse("/dashboard/persons/new", status_code=307)
|
|
|
person = await _get_one_person(person_id)
|
|
person = await _get_one_person(person_id)
|
|
|
if not person:
|
|
if not person:
|
|
|
return RedirectResponse("/dashboard/persons", status_code=303)
|
|
return RedirectResponse("/dashboard/persons", status_code=303)
|
|
|
return templates.TemplateResponse(
|
|
return templates.TemplateResponse(
|
|
|
- request, "person-form.html",
|
|
|
|
|
- {"person": person, "action": "edit"},
|
|
|
|
|
|
|
+ request, "person-detail.html",
|
|
|
|
|
+ {"person": person},
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
# ── edit person (submit) ─────────────────────────────────────────────
|
|
# ── edit person (submit) ─────────────────────────────────────────────
|
|
|
|
|
+# Must be BEFORE /dashboard/persons/{person_id}
|
|
|
|
|
|
|
|
@router.post("/dashboard/persons/{person_id}", response_class=HTMLResponse)
|
|
@router.post("/dashboard/persons/{person_id}", response_class=HTMLResponse)
|
|
|
async def person_edit_submit(
|
|
async def person_edit_submit(
|
|
@@ -170,6 +162,19 @@ async def person_edit_submit(
|
|
|
return RedirectResponse(f"/dashboard/persons/{person_id}", status_code=303)
|
|
return RedirectResponse(f"/dashboard/persons/{person_id}", status_code=303)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+# ── edit person (form) ───────────────────────────────────────────────
|
|
|
|
|
+
|
|
|
|
|
+@router.get("/dashboard/persons/{person_id}/edit", response_class=HTMLResponse)
|
|
|
|
|
+async def person_edit_form(request: Request, person_id: str):
|
|
|
|
|
+ person = await _get_one_person(person_id)
|
|
|
|
|
+ if not person:
|
|
|
|
|
+ return RedirectResponse("/dashboard/persons", status_code=303)
|
|
|
|
|
+ return templates.TemplateResponse(
|
|
|
|
|
+ request, "person-form.html",
|
|
|
|
|
+ {"person": person, "action": "edit"},
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
# ── delete person ────────────────────────────────────────────────────
|
|
# ── delete person ────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
@router.post("/dashboard/persons/{person_id}/delete", response_class=HTMLResponse)
|
|
@router.post("/dashboard/persons/{person_id}/delete", response_class=HTMLResponse)
|