Add category search functionality with results display
This commit is contained in:
+44
-9
@@ -1999,16 +1999,51 @@ class SubspecialtyAutocomplete(autocomplete.Select2QuerySetView):
|
||||
@login_required
|
||||
# @user_is_atlas_editor
|
||||
def categories_list(request):
|
||||
# condition = get_object_or_404(Condition, pk=pk)
|
||||
# Allow an optional global search across category models via GET `q`.
|
||||
query = request.GET.get("q", "").strip()
|
||||
|
||||
# logging.debug(atlas.subspecialty.first().name.all())
|
||||
return render(
|
||||
request,
|
||||
"atlas/categories_list.html",
|
||||
# {
|
||||
# "condition": condition,
|
||||
# },
|
||||
)
|
||||
results = None
|
||||
if query:
|
||||
from .models import Condition, Finding, Structure, Subspecialty, Presentation
|
||||
|
||||
# Simple case-insensitive contains search on `name` field for each model
|
||||
conditions = Condition.objects.filter(name__icontains=query).order_by("name")
|
||||
findings = Finding.objects.filter(name__icontains=query).order_by("name")
|
||||
structures = Structure.objects.filter(name__icontains=query).order_by("name")
|
||||
subspecialties = Subspecialty.objects.filter(name__icontains=query).order_by("name")
|
||||
presentations = Presentation.objects.filter(name__icontains=query).order_by("name")
|
||||
|
||||
results = {
|
||||
"conditions": conditions,
|
||||
"findings": findings,
|
||||
"structures": structures,
|
||||
"subspecialties": subspecialties,
|
||||
"presentations": presentations,
|
||||
}
|
||||
|
||||
return render(request, "atlas/categories_list.html", {"query": query, "results": results})
|
||||
|
||||
|
||||
@login_required
|
||||
def categories_search_partial(request):
|
||||
"""Return only the search results partial for HTMX requests.
|
||||
|
||||
Expects GET param `q`.
|
||||
"""
|
||||
query = request.GET.get("q", "").strip()
|
||||
results = {"conditions": (), "findings": (), "structures": (), "subspecialties": (), "presentations": ()}
|
||||
if query:
|
||||
from .models import Condition, Finding, Structure, Subspecialty, Presentation
|
||||
|
||||
results = {
|
||||
"conditions": Condition.objects.filter(name__icontains=query).order_by("name"),
|
||||
"findings": Finding.objects.filter(name__icontains=query).order_by("name"),
|
||||
"structures": Structure.objects.filter(name__icontains=query).order_by("name"),
|
||||
"subspecialties": Subspecialty.objects.filter(name__icontains=query).order_by("name"),
|
||||
"presentations": Presentation.objects.filter(name__icontains=query).order_by("name"),
|
||||
}
|
||||
|
||||
return render(request, "atlas/_categories_search_results.html", {"query": query, "results": results})
|
||||
|
||||
|
||||
# def collection_view(request):
|
||||
|
||||
Reference in New Issue
Block a user