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")
|
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