[Fix] Filter Scenarios with Parent (#311) (#323)

The scenarios lists both in /scenarios and /package/<id>/scenario no longer show related scenarios (children).
All related scenarios are shown on the scenario page under Related Scenarios if there are any.
<img width="500" alt="{C2D38DED-A402-4A27-A241-BC2302C62A50}.png" src="attachments/1371c177-220c-42d5-94ff-56f9fbab761f">

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#323
Co-authored-by: Liam Brydon <lbry121@aucklanduni.ac.nz>
Co-committed-by: Liam Brydon <lbry121@aucklanduni.ac.nz>
This commit is contained in:
2026-02-11 23:19:20 +13:00
committed by jebus
parent 27c5bad9c5
commit 73f0202267
6 changed files with 139 additions and 8 deletions

View File

@ -12,7 +12,11 @@ from epdb.models import Scenario
from epdb.logic import PackageManager
from epdb.views import _anonymous_or_real
from ..pagination import EnhancedPageNumberPagination
from ..schemas import ReviewStatusFilter, ScenarioOutSchema, ScenarioCreateSchema
from ..schemas import (
ScenarioOutSchema,
ScenarioCreateSchema,
ScenarioReviewStatusAndRelatedFilter,
)
from ..dal import get_user_entities_for_read, get_package_entities_for_read
from envipy_additional_information import registry
@ -25,11 +29,12 @@ router = Router()
@paginate(
EnhancedPageNumberPagination,
page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE,
filter_schema=ReviewStatusFilter,
filter_schema=ScenarioReviewStatusAndRelatedFilter,
)
def list_all_scenarios(request):
user = request.user
return get_user_entities_for_read(Scenario, user).order_by("name").all()
items = get_user_entities_for_read(Scenario, user)
return items.order_by("name").all()
@router.get(
@ -39,11 +44,12 @@ def list_all_scenarios(request):
@paginate(
EnhancedPageNumberPagination,
page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE,
filter_schema=ReviewStatusFilter,
filter_schema=ScenarioReviewStatusAndRelatedFilter,
)
def list_package_scenarios(request, package_uuid: UUID):
user = request.user
return get_package_entities_for_read(Scenario, package_uuid, user).order_by("name").all()
items = get_package_entities_for_read(Scenario, package_uuid, user)
return items.order_by("name").all()
@router.post("/package/{uuid:package_uuid}/scenario/", response=ScenarioOutSchema)