Make invalid search input explicit in UI and API
This commit is contained in:
@ -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"]]
|
||||
|
||||
Reference in New Issue
Block a user