diff --git a/kontor-api/src/templates/comic/publisher_detail.html b/kontor-api/src/templates/comic/publisher_detail.html
index d9fc233..16f0ab9 100644
--- a/kontor-api/src/templates/comic/publisher_detail.html
+++ b/kontor-api/src/templates/comic/publisher_detail.html
@@ -59,5 +59,12 @@
+
{% endblock %}
diff --git a/kontor-api/src/webapps/base.py b/kontor-api/src/webapps/base.py
index 29ebfb8..7c71e8b 100644
--- a/kontor-api/src/webapps/base.py
+++ b/kontor-api/src/webapps/base.py
@@ -4,18 +4,19 @@ from fastapi.templating import Jinja2Templates
from src.core.config import settings
from src.webapps.admin import route_admin
from src.webapps.auth import route_login
-from src.webapps.comic import route_comics
+from src.webapps.comic import route_comics, route_worktype
from src.webapps.media import route_media, route_videos
templates = Jinja2Templates(directory="src/templates")
api_router = APIRouter()
api_router.include_router(route_comics.router)
+api_router.include_router(route_worktype.router)
api_router.include_router(route_media.router)
api_router.include_router(route_videos.router)
api_router.include_router(route_login.router)
api_router.include_router(route_admin.router)
@api_router.get("/")
-def home(request: Request, msg: str = None):
+def home(request: Request, msg: str | None = None):
return templates.TemplateResponse("index.html", {"request": request, "msg": msg})
diff --git a/kontor-api/src/webapps/comic/route_comics.py b/kontor-api/src/webapps/comic/route_comics.py
index 94f8f2a..ea6b03d 100644
--- a/kontor-api/src/webapps/comic/route_comics.py
+++ b/kontor-api/src/webapps/comic/route_comics.py
@@ -15,7 +15,7 @@ templates = Jinja2Templates(directory="src/templates")
router = APIRouter(include_in_schema=False, prefix="/comic")
@router.get("/comics")
-def get_comics(db: SessionDep, request: Request, msg: str = None):
+def get_comics(db: SessionDep, request: Request, msg: str | None = None):
comics = db.query(Comic).all()
return templates.TemplateResponse("comic/comics.html", {"request": request, "msg": msg, "comics": comics})
@@ -25,7 +25,7 @@ def comic_details(comic_id: AnyStr, request: Request, db: SessionDep):
return templates.TemplateResponse("comic/comic_detail.html", {"request": request, "comic":comic})
@router.get("/artists")
-def get_artists(db: SessionDep, request: Request, msg: str = None):
+def get_artists(db: SessionDep, request: Request, msg: str | None = None):
artists = db.query(Artist).all()
return templates.TemplateResponse("comic/artists.html", {"request": request, "msg": msg, "artists": artists})
@@ -35,7 +35,7 @@ def artist_detail(artist_id: AnyStr, request: Request, db: SessionDep):
return templates.TemplateResponse("comic/artist_detail.html", {"request": request, "artist": artist})
@router.get("/publishers")
-def get_publishers(db: SessionDep, request: Request, msg: str = None):
+def get_publishers(db: SessionDep, request: Request, msg: str | None = None):
publishers = db.query(Publisher).all()
return templates.TemplateResponse("comic/publishers.html", {"request": request, "publishers": publishers})
@@ -47,7 +47,7 @@ def publisher_details(publisher_id: AnyStr, request: Request, db: SessionDep, ms
return templates.TemplateResponse("comic/publisher_detail.html", {"request": request, "msg": msg, "publisher": publisher})
@router.get("/issues")
-def get_issues(db: SessionDep, request: Request, msg: str = None):
+def get_issues(db: SessionDep, request: Request, msg: str | None = None):
issues = db.query(Issue).all()
return templates.TemplateResponse("comic/issues.html", {"request": request, "msg": msg, "issues": issues})
@@ -56,60 +56,3 @@ def issue_details(issue_id: AnyStr, request: Request, db: SessionDep):
issue = db.get(Issue, issue_id)
return templates.TemplateResponse("comic/issue_detail.html", {"request": request, "issue": issue})
-@router.get("/worktypes")
-def get_worktypes(db: SessionDep, request: Request, msg: str = None):
- worktypes = db.query(WorkType).all()
- return templates.TemplateResponse("comic/worktypes.html", {"request": request, "msg": msg, "worktypes": worktypes})
-
-@router.get("/worktypes/{worktype_id}")
-def worktype_detail(db: SessionDep, request: Request, worktype_id: AnyStr):
- worktype = db.get(WorkType, worktype_id)
- return templates.TemplateResponse("comic/worktype_detail.html", {"request": request, "worktype": worktype})
-
-@router.get("/worktype/add")
-def add_worktype(request: Request, db: SessionDep):
- return templates.TemplateResponse("comic/worktype_edit.html", {"request": request})
-
-@router.post("/worktype/add")
-async def add_worktype(db: SessionDep, request: Request):
- form = AddWorktypeForm(request)
- await form.load_data()
- if form.is_valid():
- try:
- work = AddWorkType(**form.__dict__)
- worktype = create_new_worktype(work=work, db=db)
- logger.info(f"add_worktype: redirect to /comic/worktypes/{worktype.id}")
- return RedirectResponse(f"/comic/worktypes/{worktype.id}", status_code=status.HTTP_303_SEE_OTHER)
- except Exception as e:
- print(e)
- form.__dict__.get("errors").append("worktype already added")
- return templates.TemplateResponse("comic/worktype_edit.html", form.__dict__)
- print("form is not valid")
- return templates.TemplateResponse("comic/worktype_edit.html", form.__dict__)
-
-@router.get("/worktype/edit/{worktype_id}")
-def edit_worktype(db: SessionDep, request: Request, worktype_id: str):
- worktype = db.get(WorkType, worktype_id)
- return templates.TemplateResponse("comic/worktype_edit.html", {"request": request, "worktype": worktype.name})
-
-@router.post("/worktype/edit/{worktype_id}")
-async def edit_worktype(request: Request, db: SessionDep, worktype_id: str):
- form = AddWorktypeForm(request)
- await form.load_data()
- if form.is_valid():
- try:
- work = AddWorkType(**form.__dict__)
- worktype = update_worktype(work=work, worktype_id=worktype_id, db=db)
- return RedirectResponse(f"/comic/worktypes/{worktype.id}", status_code=status.HTTP_303_SEE_OTHER)
- except Exception as e:
- print(e)
- form.__dict__.get("errors").append("worktype already added")
- return templates.TemplateResponse("comic/worktype_edit.html", form.__dict__)
- return templates.TemplateResponse("comic/worktype_edit.html", form.__dict__)
-
-@router.get("/worktype/delete/{worktype_id}")
-async def delete_worktype(db: SessionDep, request: Request, worktype_id: str):
- worktype = db.get(WorkType, worktype_id)
- db.delete(worktype)
- db.commit()
- return RedirectResponse("/comic/worktypes", status_code=status.HTTP_303_SEE_OTHER)
diff --git a/kontor-api/src/webapps/comic/route_worktype.py b/kontor-api/src/webapps/comic/route_worktype.py
new file mode 100644
index 0000000..59ddb4d
--- /dev/null
+++ b/kontor-api/src/webapps/comic/route_worktype.py
@@ -0,0 +1,73 @@
+from fastapi import APIRouter, Request, responses, status
+from fastapi.templating import Jinja2Templates
+from fastapi.responses import RedirectResponse
+
+from src.apis.utils import SessionDep
+from src.db.models.comic import Comic, Artist, Publisher, Issue, WorkType
+from typing import AnyStr
+
+from src.db.repository.comic import create_new_worktype, update_worktype
+from src.main import logger
+from src.schema.comics.worktype import AddWorkType
+from src.webapps.comic.forms import AddWorktypeForm
+
+templates = Jinja2Templates(directory="src/templates")
+router = APIRouter(include_in_schema=False, prefix="/comic")
+
+@router.get("/worktypes")
+def get_worktypes(db: SessionDep, request: Request, msg: str | None = None):
+ worktypes = db.query(WorkType).all()
+ return templates.TemplateResponse("comic/worktypes.html", {"request": request, "msg": msg, "worktypes": worktypes})
+
+@router.get("/worktypes/{worktype_id}")
+def worktype_detail(db: SessionDep, request: Request, worktype_id: AnyStr):
+ worktype = db.get(WorkType, worktype_id)
+ return templates.TemplateResponse("comic/worktype_detail.html", {"request": request, "worktype": worktype})
+
+@router.get("/worktype/add")
+def add_worktype(request: Request, db: SessionDep):
+ return templates.TemplateResponse("comic/worktype_edit.html", {"request": request})
+
+@router.post("/worktype/add")
+async def add_worktype(db: SessionDep, request: Request):
+ form = AddWorktypeForm(request)
+ await form.load_data()
+ if form.is_valid():
+ try:
+ work = AddWorkType(**form.__dict__)
+ worktype = create_new_worktype(work=work, db=db)
+ logger.info(f"add_worktype: redirect to /comic/worktypes/{worktype.id}")
+ return RedirectResponse(f"/comic/worktypes/{worktype.id}", status_code=status.HTTP_303_SEE_OTHER)
+ except Exception as e:
+ print(e)
+ form.__dict__.get("errors").append("worktype already added")
+ return templates.TemplateResponse("comic/worktype_edit.html", form.__dict__)
+ print("form is not valid")
+ return templates.TemplateResponse("comic/worktype_edit.html", form.__dict__)
+
+@router.get("/worktype/edit/{worktype_id}")
+def edit_worktype(db: SessionDep, request: Request, worktype_id: str):
+ worktype = db.get(WorkType, worktype_id)
+ return templates.TemplateResponse("comic/worktype_edit.html", {"request": request, "worktype": worktype.name})
+
+@router.post("/worktype/edit/{worktype_id}")
+async def edit_worktype(request: Request, db: SessionDep, worktype_id: str):
+ form = AddWorktypeForm(request)
+ await form.load_data()
+ if form.is_valid():
+ try:
+ work = AddWorkType(**form.__dict__)
+ worktype = update_worktype(work=work, worktype_id=worktype_id, db=db)
+ return RedirectResponse(f"/comic/worktypes/{worktype.id}", status_code=status.HTTP_303_SEE_OTHER)
+ except Exception as e:
+ print(e)
+ form.__dict__.get("errors").append("worktype already added")
+ return templates.TemplateResponse("comic/worktype_edit.html", form.__dict__)
+ return templates.TemplateResponse("comic/worktype_edit.html", form.__dict__)
+
+@router.get("/worktype/delete/{worktype_id}")
+async def delete_worktype(db: SessionDep, request: Request, worktype_id: str):
+ worktype = db.get(WorkType, worktype_id)
+ db.delete(worktype)
+ db.commit()
+ return RedirectResponse("/comic/worktypes", status_code=status.HTTP_303_SEE_OTHER)