diff --git a/generic/views.py b/generic/views.py index df5daf36..239390d0 100644 --- a/generic/views.py +++ b/generic/views.py @@ -212,7 +212,8 @@ def bulk_delete_questions(request): Model = APP_MODEL_MAP.get(app) if Model is None: - return JsonResponse({"ok": False, "error": f"Unknown app: {app}"}, status=400) + logger.error(f"bulk_delete_questions called with unknown app: {app}") + return HttpResponse(f"Unknown app: {app}") deleted = 0 errors = [] @@ -222,7 +223,7 @@ def bulk_delete_questions(request): qs.delete() except Exception as e: logger.exception("bulk_delete failed for app=%s ids=%s", app, ids) - return JsonResponse({"ok": False, "error": str(e)}, status=500) + return HttpResponse("Unable to deleted items") # Render a small fragment summarising deletions context = {"deleted": deleted, "errors": errors} @@ -4369,7 +4370,6 @@ def trainees_bulk_update_from_spreadsheet(request): # Fall back to automatic match if not user: user = row.get("matched_user") - if not user: skipped += 1 continue @@ -4399,50 +4399,6 @@ def trainees_bulk_update_from_spreadsheet(request): ) -@user_is_cid_user_manager -def user_search(request): - """Simple JSON endpoint to search users by name/email for manual matching.""" - q = request.GET.get("q", "").strip() - results = [] - if q: - qs = User.objects.filter( - Q(first_name__icontains=q) | Q(last_name__icontains=q) | Q(email__icontains=q) - ).order_by("last_name", "first_name")[:50] - - for u in qs: - results.append({"id": u.pk, "text": f"{u.first_name} {u.last_name} ({u.email})"}) - - # If this is an HTMX request (or a row param was provided) render an HTML fragment - # that can be swapped into the preview row's results container. Otherwise return JSON. - row = request.GET.get("row") - if request.headers.get("HX-Request") == "true" or row is not None: - # Render a small partial that lists results with Select buttons that call - # the setManualUser(row, id, text) function in the parent page. - return render(request, "generic/partials/user_search_results.html", {"results": results, "row": int(row) if row is not None else None}) - - return JsonResponse({"results": results}) - - -@user_is_cid_user_manager -def supervisor_search(request): - """Simple JSON/HTMX endpoint to search supervisors by name/email for manual matching.""" - q = request.GET.get("q", "").strip() - results = [] - if q: - qs = Supervisor.objects.filter( - Q(name__icontains=q) | Q(email__icontains=q) - ).order_by("name")[:50] - - for s in qs: - results.append({"id": s.pk, "text": f"{s.name} ({s.email})"}) - - row = request.GET.get("row") - if request.headers.get("HX-Request") == "true" or row is not None: - return render(request, "generic/partials/supervisor_search_results.html", {"results": results, "row": int(row) if row is not None else None}) - - return JsonResponse({"results": results}) - - def create_trainee(request, context=None): return create_user(request, context, trainee=True) diff --git a/templates/question_table_view.html b/templates/question_table_view.html index e6f9dd36..ec6fdaea 100644 --- a/templates/question_table_view.html +++ b/templates/question_table_view.html @@ -10,6 +10,7 @@