Vorbereitung Release 0.2.0 #83
@@ -59,5 +59,12 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div>
|
||||||
|
<a href="/comic/publishers" class="btn btn-outline-primary btn-sm active" role="button" aria-pressed="true">Back to list</a>
|
||||||
|
<a href="/comic/publisher/edit/{{publisher.id}}" class="btn btn-outline-primary btn-sm active" role="button" aria-pressed="true">Edit</a>
|
||||||
|
<a href="/comic/publisher/delete/{{publisher.id}}" class="btn btn-outline-danger btn-sm active" role="button" aria-pressed="true">Delete</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -4,18 +4,19 @@ from fastapi.templating import Jinja2Templates
|
|||||||
from src.core.config import settings
|
from src.core.config import settings
|
||||||
from src.webapps.admin import route_admin
|
from src.webapps.admin import route_admin
|
||||||
from src.webapps.auth import route_login
|
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
|
from src.webapps.media import route_media, route_videos
|
||||||
|
|
||||||
templates = Jinja2Templates(directory="src/templates")
|
templates = Jinja2Templates(directory="src/templates")
|
||||||
|
|
||||||
api_router = APIRouter()
|
api_router = APIRouter()
|
||||||
api_router.include_router(route_comics.router)
|
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_media.router)
|
||||||
api_router.include_router(route_videos.router)
|
api_router.include_router(route_videos.router)
|
||||||
api_router.include_router(route_login.router)
|
api_router.include_router(route_login.router)
|
||||||
api_router.include_router(route_admin.router)
|
api_router.include_router(route_admin.router)
|
||||||
|
|
||||||
@api_router.get("/")
|
@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})
|
return templates.TemplateResponse("index.html", {"request": request, "msg": msg})
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ templates = Jinja2Templates(directory="src/templates")
|
|||||||
router = APIRouter(include_in_schema=False, prefix="/comic")
|
router = APIRouter(include_in_schema=False, prefix="/comic")
|
||||||
|
|
||||||
@router.get("/comics")
|
@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()
|
comics = db.query(Comic).all()
|
||||||
return templates.TemplateResponse("comic/comics.html", {"request": request, "msg": msg, "comics": comics})
|
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})
|
return templates.TemplateResponse("comic/comic_detail.html", {"request": request, "comic":comic})
|
||||||
|
|
||||||
@router.get("/artists")
|
@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()
|
artists = db.query(Artist).all()
|
||||||
return templates.TemplateResponse("comic/artists.html", {"request": request, "msg": msg, "artists": artists})
|
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})
|
return templates.TemplateResponse("comic/artist_detail.html", {"request": request, "artist": artist})
|
||||||
|
|
||||||
@router.get("/publishers")
|
@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()
|
publishers = db.query(Publisher).all()
|
||||||
return templates.TemplateResponse("comic/publishers.html", {"request": request, "publishers": publishers})
|
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})
|
return templates.TemplateResponse("comic/publisher_detail.html", {"request": request, "msg": msg, "publisher": publisher})
|
||||||
|
|
||||||
@router.get("/issues")
|
@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()
|
issues = db.query(Issue).all()
|
||||||
return templates.TemplateResponse("comic/issues.html", {"request": request, "msg": msg, "issues": issues})
|
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)
|
issue = db.get(Issue, issue_id)
|
||||||
return templates.TemplateResponse("comic/issue_detail.html", {"request": request, "issue": issue})
|
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)
|
|
||||||
|
|||||||
@@ -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)
|
||||||
Reference in New Issue
Block a user