This commit is contained in:
pacnpal
2024-10-31 17:27:31 +00:00
parent c1591af871
commit 71272e36a6
10 changed files with 119 additions and 78 deletions

View File

@@ -45,24 +45,6 @@ def get_cities(request):
).values_list('name', flat=True)[:10]
return JsonResponse(list(cities), safe=False)
def get_locations(request):
query = request.GET.get('q', '')
locations = set()
# Search countries
countries = Country.objects.filter(name__icontains=query).values_list('name', flat=True)[:5]
locations.update(countries)
# Search regions
regions = Region.objects.filter(name__icontains=query).values_list('name', flat=True)[:5]
locations.update(regions)
# Search cities
cities = City.objects.filter(name__icontains=query).values_list('name', flat=True)[:5]
locations.update(cities)
return JsonResponse(list(locations), safe=False)
class ParkCreateView(LoginRequiredMixin, CreateView):
model = Park
form_class = ParkForm
@@ -163,26 +145,27 @@ class ParkListView(ListView):
def get_queryset(self):
queryset = Park.objects.select_related('owner', 'country', 'region', 'city').prefetch_related('photos', 'rides')
search = self.request.GET.get('search', '').strip() or None
location = self.request.GET.get('location', '').strip() or None
status = self.request.GET.get('status', '').strip() or None
search = self.request.GET.get('search', '').strip()
country = self.request.GET.get('country', '').strip()
region = self.request.GET.get('region', '').strip()
city = self.request.GET.get('city', '').strip()
status = self.request.GET.get('status', '').strip()
if search:
queryset = queryset.filter(
Q(name__icontains=search) |
Q(location__icontains=search) |
Q(country__name__icontains=search) |
Q(region__name__icontains=search) |
Q(city__name__icontains=search)
)
if location:
# Try to match against the formatted location or any location field
queryset = queryset.filter(
Q(location__icontains=location) |
Q(country__name__icontains=location) |
Q(region__name__icontains=location) |
Q(city__name__icontains=location)
Q(location__icontains=search)
)
if country:
queryset = queryset.filter(country__name__icontains=country)
if region:
queryset = queryset.filter(region__name__icontains=region)
if city:
queryset = queryset.filter(city__name__icontains=city)
if status:
queryset = queryset.filter(status=status)
@@ -192,7 +175,9 @@ class ParkListView(ListView):
context = super().get_context_data(**kwargs)
context['current_filters'] = {
'search': self.request.GET.get('search', ''),
'location': self.request.GET.get('location', ''),
'country': self.request.GET.get('country', ''),
'region': self.request.GET.get('region', ''),
'city': self.request.GET.get('city', ''),
'status': self.request.GET.get('status', '')
}
return context