29 lines
1021 B
Python
29 lines
1021 B
Python
from django.db.models import QuerySet
|
|
|
|
from apps.players.models import Player
|
|
|
|
|
|
def apply_saved_search_filters(queryset: QuerySet[Player], filters: dict) -> QuerySet[Player]:
|
|
"""Apply structured saved-search filters to a player queryset."""
|
|
nationality_id = filters.get("nationality_id")
|
|
if nationality_id:
|
|
queryset = queryset.filter(nationality_id=nationality_id)
|
|
|
|
nominal_position_id = filters.get("nominal_position_id")
|
|
if nominal_position_id:
|
|
queryset = queryset.filter(nominal_position_id=nominal_position_id)
|
|
|
|
inferred_role_id = filters.get("inferred_role_id")
|
|
if inferred_role_id:
|
|
queryset = queryset.filter(inferred_role_id=inferred_role_id)
|
|
|
|
min_height_cm = filters.get("min_height_cm")
|
|
if min_height_cm is not None:
|
|
queryset = queryset.filter(height_cm__gte=min_height_cm)
|
|
|
|
max_height_cm = filters.get("max_height_cm")
|
|
if max_height_cm is not None:
|
|
queryset = queryset.filter(height_cm__lte=max_height_cm)
|
|
|
|
return queryset
|