diff --git a/kontor-api/src/db/repository/comics/comic.py b/kontor-api/src/db/repository/comics/comic.py index 8f20431..0f208c1 100644 --- a/kontor-api/src/db/repository/comics/comic.py +++ b/kontor-api/src/db/repository/comics/comic.py @@ -25,5 +25,7 @@ def get_issue_details(issue: Issue) -> IssueDetailsResponse: return response -def update_comic(comic: ComicSchema, comic_id: AnyStr, db: Session): +def update_comic(comic: ComicSchema, comic_id: AnyStr, db: Session) -> type[Comic] | None: logger.info(f"update_comic: {comic} with {comic_id}") + comic = db.get(Comic, comic_id) + return comic diff --git a/kontor-api/src/schema/comics/comic.py b/kontor-api/src/schema/comics/comic.py index 1583417..b6b89dc 100644 --- a/kontor-api/src/schema/comics/comic.py +++ b/kontor-api/src/schema/comics/comic.py @@ -23,6 +23,7 @@ class ComicDetailsResponse(BaseModel): class ComicSchema(BaseModel): + id: str title: str weblink: Optional[AnyUrl] completed: Optional[bool] diff --git a/kontor-api/src/templates/comic/comic_edit.html b/kontor-api/src/templates/comic/comic_edit.html index fb8edab..57ce5d4 100644 --- a/kontor-api/src/templates/comic/comic_edit.html +++ b/kontor-api/src/templates/comic/comic_edit.html @@ -17,26 +17,38 @@

Edit an Comic entry

-
+
- - + +
+ +
- - + +
+ +
-
- - +
+
+
+ +
-
- - +
+
+
+ +
-
- - +
+
+ + +
diff --git a/kontor-api/src/webapps/comic/forms/comic.py b/kontor-api/src/webapps/comic/forms/comic.py index 54dd4a1..1fcc2e7 100644 --- a/kontor-api/src/webapps/comic/forms/comic.py +++ b/kontor-api/src/webapps/comic/forms/comic.py @@ -3,16 +3,25 @@ from typing import List, Optional class ValidateComicForm: - def __init__(self, request: Request): + def __init__(self, request: Request, comic_id: str, completed: bool, current_order: bool): self.request = request self.errors: List = [] + self.id = comic_id self.title: Optional[str] = None + self.weblink: Optional[str] = None + self.completed = completed + self.current_order = current_order async def load_data(self): form = await self.request.form() + print(f"{form.keys()}") self.title = form.get("title") + self.weblink = form.get("weblink") def is_valid(self): if not self.errors: return True return False + + def __str__(self): + return f"{self.title=}, {self.weblink=}" diff --git a/kontor-api/src/webapps/comic/route_comics.py b/kontor-api/src/webapps/comic/route_comics.py index 79c284b..61511ad 100644 --- a/kontor-api/src/webapps/comic/route_comics.py +++ b/kontor-api/src/webapps/comic/route_comics.py @@ -1,4 +1,4 @@ -from fastapi import APIRouter, Request, status +from fastapi import APIRouter, Form, Request, status from fastapi.templating import Jinja2Templates from fastapi.responses import RedirectResponse @@ -48,8 +48,11 @@ def edit_comic(db: SessionDep, request: Request, comic_id: str): @router.post("/comic/edit/{comic_id}") -async def validate_comic(request: Request, db: SessionDep, comic_id: str): - form = ValidateComicForm(request) +async def validate_comic(request: Request, db: SessionDep, comic_id: str, action: str = Form(...), completed: bool = Form(False), current_order: bool = Form(False)): + if action == "cancel": + return RedirectResponse(f"/comic/comics/{comic_id}", status_code=status.HTTP_303_SEE_OTHER) + form = ValidateComicForm(request, comic_id, completed, current_order) + logger.info(f"request: {repr(request)}") await form.load_data() logger.info(f"form: {form}") if form.is_valid():