mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 11:51:10 -05:00
Refactor park queryset logic: move base queryset to a dedicated module for improved organization and maintainability
This commit is contained in:
@@ -12,7 +12,7 @@ from django_filters import (
|
|||||||
BooleanFilter
|
BooleanFilter
|
||||||
)
|
)
|
||||||
from .models import Park
|
from .models import Park
|
||||||
from .views import get_base_park_queryset
|
from .querysets import get_base_park_queryset
|
||||||
from companies.models import Company
|
from companies.models import Company
|
||||||
|
|
||||||
def validate_positive_integer(value):
|
def validate_positive_integer(value):
|
||||||
|
|||||||
14
parks/querysets.py
Normal file
14
parks/querysets.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
from django.db.models import QuerySet, Count, Q
|
||||||
|
from .models import Park
|
||||||
|
|
||||||
|
def get_base_park_queryset() -> QuerySet[Park]:
|
||||||
|
"""Get base queryset with all needed annotations and prefetches"""
|
||||||
|
return (
|
||||||
|
Park.objects.select_related('owner')
|
||||||
|
.prefetch_related('location', 'photos', 'rides')
|
||||||
|
.annotate(
|
||||||
|
current_ride_count=Count('rides', distinct=True),
|
||||||
|
current_coaster_count=Count('rides', filter=Q(rides__category="RC"), distinct=True)
|
||||||
|
)
|
||||||
|
.order_by('name')
|
||||||
|
)
|
||||||
@@ -29,17 +29,7 @@ def get_view_mode(request: HttpRequest) -> ViewMode:
|
|||||||
return cast(ViewMode, 'list' if view_mode == 'list' else 'grid')
|
return cast(ViewMode, 'list' if view_mode == 'list' else 'grid')
|
||||||
|
|
||||||
|
|
||||||
def get_base_park_queryset() -> QuerySet[Park]:
|
from .querysets import get_base_park_queryset
|
||||||
"""Get base queryset with all needed annotations and prefetches"""
|
|
||||||
return (
|
|
||||||
Park.objects.select_related('owner')
|
|
||||||
.prefetch_related('location', 'photos', 'rides')
|
|
||||||
.annotate(
|
|
||||||
current_ride_count=Count('rides', distinct=True),
|
|
||||||
current_coaster_count=Count('rides', filter=Q(rides__category="RC"), distinct=True)
|
|
||||||
)
|
|
||||||
.order_by('name')
|
|
||||||
)
|
|
||||||
|
|
||||||
def add_park_button(request: HttpRequest) -> HttpResponse:
|
def add_park_button(request: HttpRequest) -> HttpResponse:
|
||||||
"""Return the add park button partial template"""
|
"""Return the add park button partial template"""
|
||||||
|
|||||||
Reference in New Issue
Block a user