Make invalid search input explicit in UI and API

This commit is contained in:
Alfredo Di Stasio
2026-03-10 15:53:55 +01:00
parent 92c804a474
commit 2586f15ae8
6 changed files with 150 additions and 17 deletions

View File

@ -33,7 +33,7 @@ class PlayerSearchView(ListView):
def get_form(self):
if not hasattr(self, "_search_form"):
self._search_form = PlayerSearchForm(self.request.GET or None)
self._search_form = PlayerSearchForm(self.request.GET)
return self._search_form
def get_paginate_by(self, queryset):
@ -44,20 +44,23 @@ class PlayerSearchView(ListView):
def get_queryset(self):
form = self.get_form()
form_valid = form.is_valid()
if form.is_bound and not form_valid:
return Player.objects.none()
queryset = base_player_queryset()
if form.is_valid():
queryset = filter_players(queryset, form.cleaned_data)
queryset = annotate_player_metrics(queryset, form.cleaned_data)
queryset = apply_sorting(queryset, form.cleaned_data.get("sort", "name_asc"))
else:
queryset = annotate_player_metrics(queryset).order_by("full_name", "id")
queryset = filter_players(queryset, form.cleaned_data)
queryset = annotate_player_metrics(queryset, form.cleaned_data)
queryset = apply_sorting(queryset, form.cleaned_data.get("sort", "name_asc"))
return queryset
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["search_form"] = self.get_form()
search_form = self.get_form()
context["search_form"] = search_form
context["search_has_errors"] = search_form.is_bound and bool(search_form.errors)
context["favorite_player_ids"] = set()
if self.request.user.is_authenticated:
player_ids = [player.id for player in context["players"]]