Enhance trainee management UI and functionality
- Improved bulk edit options for user groups with success alerts. - Updated trainee selection count display. - Refined HTMX responses for user actions, providing better feedback. - Enhanced checkbox toggle functionality for trainee selection.
This commit is contained in:
+52
-9
@@ -4916,15 +4916,28 @@ def users_bulk_delete_supervisors(request):
|
||||
u.userprofile.supervisor = None
|
||||
u.save()
|
||||
|
||||
modified_users = ",".join([user.username for user in user_models])
|
||||
modified_users = ", ".join([f"{user.first_name} {user.last_name}" for user in user_models])
|
||||
|
||||
return HttpResponse(
|
||||
f"Supervisors removed from {modified_users}. Refresh page to see update",
|
||||
content_type="text/plain",
|
||||
f"""
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
<strong>Success!</strong> Supervisors removed from: {modified_users}. Refresh page to see update.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
""",
|
||||
content_type="text/html",
|
||||
)
|
||||
|
||||
else:
|
||||
return HttpResponse("No users selected", content_type="text/plain")
|
||||
return HttpResponse(
|
||||
"""
|
||||
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
||||
<strong>Warning!</strong> No users selected.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
""",
|
||||
content_type="text/html",
|
||||
)
|
||||
|
||||
|
||||
class NoUsersSelected(Exception):
|
||||
@@ -4947,6 +4960,8 @@ def user_not_trainee(request, user_id):
|
||||
user.userprofile.peninsula_trainee = False
|
||||
user.userprofile.save()
|
||||
|
||||
if request.htmx:
|
||||
return HttpResponse("")
|
||||
return HttpResponse(
|
||||
f"{user.username} is no longer a trainee", content_type="text/plain"
|
||||
)
|
||||
@@ -4968,7 +4983,12 @@ def users_bulk_edit(request):
|
||||
u.is_active = False
|
||||
u.save()
|
||||
|
||||
html = "Users deactivated"
|
||||
html = """
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
<strong>Success!</strong> Selected users have been deactivated.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
"""
|
||||
|
||||
case "bulk-edit-grade-button":
|
||||
user_grades = UserGrades.objects.all()
|
||||
@@ -5013,7 +5033,12 @@ def users_bulk_edit(request):
|
||||
for u in user_models:
|
||||
u.userprofile.grade_id = grade
|
||||
u.save()
|
||||
html = "Grades updated"
|
||||
html = """
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
<strong>Success!</strong> Grades updated successfully.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
"""
|
||||
case "bulk-add-group-button":
|
||||
user_groups = UserUserGroup.objects.all()
|
||||
|
||||
@@ -5064,7 +5089,12 @@ def users_bulk_edit(request):
|
||||
pass
|
||||
u.user_groups.add(r.split("--")[-1])
|
||||
u.save()
|
||||
html = "Group added"
|
||||
html = """
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
<strong>Success!</strong> Group added to all selected users.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
"""
|
||||
case r if r.startswith("remove-group"):
|
||||
user_models = get_user_selection_from_request(request)
|
||||
|
||||
@@ -5072,12 +5102,25 @@ def users_bulk_edit(request):
|
||||
for u in user_models:
|
||||
group_id = r.split("--")[-1]
|
||||
u.user_groups.remove(group_id)
|
||||
html = "Group removed"
|
||||
html = """
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
<strong>Success!</strong> Group removed from all selected users.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
"""
|
||||
case _:
|
||||
html = "None"
|
||||
return HttpResponse(html, content_type="text/html")
|
||||
except NoUsersSelected:
|
||||
return HttpResponse("No users selected", content_type="text/html")
|
||||
return HttpResponse(
|
||||
"""
|
||||
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
||||
<strong>Warning!</strong> No users selected.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
""",
|
||||
content_type="text/html",
|
||||
)
|
||||
|
||||
|
||||
@user_is_cid_user_manager
|
||||
|
||||
Reference in New Issue
Block a user