diff --git a/kontor-api/src/templates/comic/artist_detail.html b/kontor-api/src/templates/comic/artist_detail.html index aed3bd1..650f796 100644 --- a/kontor-api/src/templates/comic/artist_detail.html +++ b/kontor-api/src/templates/comic/artist_detail.html @@ -51,7 +51,11 @@
-
Back to list
+
+ Back to list + Edit + Delete +
{% endblock %} diff --git a/kontor-api/src/templates/comic/artist_edit.html b/kontor-api/src/templates/comic/artist_edit.html new file mode 100644 index 0000000..c73b585 --- /dev/null +++ b/kontor-api/src/templates/comic/artist_edit.html @@ -0,0 +1,32 @@ +{% extends "shared/base.html" %} + + +{% block title %} + Edit Artist +{% endblock %} + +{% block content %} +
+
+
+ {% for error in errors %} +
  • {{error}}
  • + {% endfor %} +
    +
    + +
    +

    Edit an Artist entry

    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +{% endblock %} diff --git a/kontor-api/src/webapps/base.py b/kontor-api/src/webapps/base.py index 7c71e8b..acb8015 100644 --- a/kontor-api/src/webapps/base.py +++ b/kontor-api/src/webapps/base.py @@ -4,13 +4,14 @@ 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, route_worktype +from src.webapps.comic import route_comics, route_worktype, route_artists 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_artists.router) api_router.include_router(route_worktype.router) api_router.include_router(route_media.router) api_router.include_router(route_videos.router) diff --git a/kontor-api/src/webapps/comic/route_artists.py b/kontor-api/src/webapps/comic/route_artists.py new file mode 100644 index 0000000..00cf0cd --- /dev/null +++ b/kontor-api/src/webapps/comic/route_artists.py @@ -0,0 +1,53 @@ +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 Artist +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("/artists") +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}) + +@router.get("/artists/{artist_id}") +def artist_detail(artist_id: AnyStr, request: Request, db: SessionDep): + artist = db.get(Artist, str(artist_id)) + return templates.TemplateResponse("comic/artist_detail.html", {"request": request, "artist": artist}) + + +@router.get("/artist/edit/{artist_id}") +def edit_artist(db: SessionDep, request: Request, artist_id: str): + artist = db.get(Artist, artist_id) + return templates.TemplateResponse("comic/artist_edit.html", {"request": request, "artist_name": artist.name, "artist_link": artist.weblink}) + +@router.post("/artist/edit/{artist_id}") +async def edit_artist(request: Request, db: SessionDep, artist_id: str): + form = AddArtistForm(request) + await form.load_data() + if form.is_valid(): + try: + artist = AddArtist(**form.__dict__) + artist = update_artist(artist=artist, artist_id=artist_id, db=db) + return RedirectResponse(f"/comic/artists/{artist.id}", status_code=status.HTTP_303_SEE_OTHER) + except Exception as e: + print(e) + form.__dict__.get("errors").append("artist already added") + return templates.TemplateResponse("comic/artist_edit.html", form.__dict__) + return templates.TemplateResponse("comic/artist_edit.html", form.__dict__) + +@router.get("/artist/delete/{artist_id}") +async def delete_artist(db: SessionDep, request: Request, artist_id: str): + artist = db.get(Artist, artist_id) + db.delete(artist) + db.commit() + return RedirectResponse("/comic/artists", status_code=status.HTTP_303_SEE_OTHER) diff --git a/kontor-api/src/webapps/comic/route_comics.py b/kontor-api/src/webapps/comic/route_comics.py index b27dd97..808795a 100644 --- a/kontor-api/src/webapps/comic/route_comics.py +++ b/kontor-api/src/webapps/comic/route_comics.py @@ -18,16 +18,6 @@ def comic_details(comic_id: AnyStr, request: Request, db: SessionDep): comic = db.get(Comic, comic_id) return templates.TemplateResponse("comic/comic_detail.html", {"request": request, "comic":comic}) -@router.get("/artists") -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}) - -@router.get("/artists/{artist_id}") -def artist_detail(artist_id: AnyStr, request: Request, db: SessionDep): - artist = db.get(Artist, str(artist_id)) - return templates.TemplateResponse("comic/artist_detail.html", {"request": request, "artist": artist}) - @router.get("/publishers") def get_publishers(db: SessionDep, request: Request, msg: str | None = None): publishers = db.query(Publisher).all()