diff --git a/backend/src/tv/repository.py b/backend/src/tv/repository.py index fc409be..f518f7d 100644 --- a/backend/src/tv/repository.py +++ b/backend/src/tv/repository.py @@ -220,8 +220,3 @@ def get_seasons_by_torrent_id(db: Session, torrent_id: TorrentId) -> list[Season def get_season_request(db: Session, season_request_id: SeasonRequestId) -> SeasonRequestSchema: return SeasonRequestSchema.model_validate(db.get(SeasonRequest, season_request_id)) - -def update_season_request(db: Session, season_request: SeasonRequestSchema) -> None: - db.delete(db.get(SeasonRequest, season_request.id)) - db.add(SeasonRequest(**season_request.model_dump())) - db.commit() diff --git a/backend/src/tv/router.py b/backend/src/tv/router.py index 5b6ba0f..2ccbe9e 100644 --- a/backend/src/tv/router.py +++ b/backend/src/tv/router.py @@ -129,6 +129,8 @@ def authorize_request(db: DbSessionDependency, user: Annotated[User, Depends(cur season_request: SeasonRequest = tv.repository.get_season_request(db=db, season_request_id=season_request_id) season_request.authorized_by = UserRead.model_validate(user) season_request.authorized = authorized_status + if not authorized_status: + season_request.authorized_by = None tv.service.update_season_request(db=db, season_request=season_request) return diff --git a/backend/src/tv/service.py b/backend/src/tv/service.py index e5f7111..5bd2f81 100644 --- a/backend/src/tv/service.py +++ b/backend/src/tv/service.py @@ -35,8 +35,8 @@ def get_season_request_by_id(db: Session, season_request_id: SeasonRequestId) -> return tv.repository.get_season_request(db=db, season_request_id=season_request_id) def update_season_request(db: Session, season_request: SeasonRequest) -> None: - tv.repository.update_season_request(db=db, season_request=season_request) - + tv.repository.delete_season_request(db=db, season_request_id=season_request.id) + tv.repository.add_season_request(db=db, season_request=season_request) def delete_season_request(db: Session, season_request_id: SeasonRequestId) -> None: tv.repository.delete_season_request(db=db, season_request_id=season_request_id) diff --git a/web/src/lib/components/season-requests-table.svelte b/web/src/lib/components/season-requests-table.svelte index 618d3ab..ae871c5 100644 --- a/web/src/lib/components/season-requests-table.svelte +++ b/web/src/lib/components/season-requests-table.svelte @@ -7,6 +7,8 @@ import {Button} from '$lib/components/ui/button/index.js'; import {env} from '$env/dynamic/public'; import {toast} from 'svelte-sonner'; + import {goto} from "$app/navigation"; + import {base} from "$app/paths"; let { requests, @@ -32,8 +34,9 @@ if (response.ok) { const requestIndex = requests.findIndex((r) => r.id === requestId); if (requestIndex !== -1) { - requests[requestIndex].authorized = !currentAuthorizedStatus; - requests[requestIndex].authorized_by = user(); + let newAuthorizedStatus = !currentAuthorizedStatus; + requests[requestIndex].authorized = newAuthorizedStatus; + requests[requestIndex].authorized_by = newAuthorizedStatus ? user() : null; } toast.success( `Request ${!currentAuthorizedStatus ? 'approved' : 'unapproved'} successfully.` @@ -119,15 +122,23 @@ {request.authorized_by?.email ?? 'N/A'} - + {#if user().is_superuser} + {/if} {#if user().is_superuser || user().id === request.requested_by?.id}