Add user and supervisor search endpoints for trainees bulk-update UI
This commit is contained in:
@@ -4857,4 +4857,59 @@ def cimar_case_refresh(request, uuid):
|
||||
|
||||
return HttpResponse("Case refreshed")
|
||||
|
||||
|
||||
@login_required
|
||||
def user_search(request):
|
||||
"""HTMX endpoint to search users for the trainees bulk-update UI.
|
||||
|
||||
Expects GET params:
|
||||
- q: query string
|
||||
- row: optional row index (passed back to JS)
|
||||
|
||||
Returns a small HTML fragment listing up to 10 matching users. Each
|
||||
result calls `setManualUser(row, id, text)` when clicked (see template
|
||||
JS in `trainees_bulk_update.html`).
|
||||
"""
|
||||
q = (request.GET.get("q") or "").strip()
|
||||
row = request.GET.get("row")
|
||||
if not q:
|
||||
return HttpResponse("")
|
||||
|
||||
users_qs = User.objects.filter(
|
||||
Q(first_name__icontains=q)
|
||||
| Q(last_name__icontains=q)
|
||||
| Q(email__icontains=q)
|
||||
| Q(username__icontains=q)
|
||||
).order_by("last_name", "first_name")[:10]
|
||||
|
||||
results = [{"id": u.pk, "text": f"{u.get_full_name() or u.username} - {u.email or ''}"} for u in users_qs]
|
||||
|
||||
return render(request, "generic/partials/user_search_results.html", {"results": results, "row": row, "q": q})
|
||||
|
||||
|
||||
@login_required
|
||||
def supervisor_search(request):
|
||||
"""HTMX endpoint to search supervisors for the trainees bulk-update UI.
|
||||
|
||||
Expects GET params:
|
||||
- q: query string
|
||||
- row: optional row index (passed back to JS)
|
||||
|
||||
Returns a small HTML fragment listing up to 10 matching supervisors. Each
|
||||
result calls `setManualSupervisor(row, id, text)` when clicked (see
|
||||
template JS in `trainees_bulk_update.html`).
|
||||
"""
|
||||
q = (request.GET.get("q") or "").strip()
|
||||
row = request.GET.get("row")
|
||||
if not q:
|
||||
return HttpResponse("")
|
||||
|
||||
supervisors_qs = Supervisor.objects.filter(
|
||||
Q(name__icontains=q) | Q(email__icontains=q)
|
||||
).order_by("name")[:10]
|
||||
|
||||
results = [{"id": s.pk, "text": f"{s.name} - {s.email or ''}"} for s in supervisors_qs]
|
||||
|
||||
return render(request, "generic/partials/supervisor_search_results.html", {"results": results, "row": row, "q": q})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user