diff --git a/parks/filters.py b/parks/filters.py index f45f40de..ff27eb4f 100644 --- a/parks/filters.py +++ b/parks/filters.py @@ -12,7 +12,7 @@ from django_filters import ( BooleanFilter ) from .models import Park -from .views import get_base_park_queryset +from .querysets import get_base_park_queryset from companies.models import Company def validate_positive_integer(value): diff --git a/parks/querysets.py b/parks/querysets.py new file mode 100644 index 00000000..26d41fb1 --- /dev/null +++ b/parks/querysets.py @@ -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') + ) \ No newline at end of file diff --git a/parks/views.py b/parks/views.py index dff57dcc..6048fad1 100644 --- a/parks/views.py +++ b/parks/views.py @@ -29,17 +29,7 @@ def get_view_mode(request: HttpRequest) -> ViewMode: return cast(ViewMode, 'list' if view_mode == 'list' else 'grid') -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') - ) +from .querysets import get_base_park_queryset def add_park_button(request: HttpRequest) -> HttpResponse: """Return the add park button partial template"""