minor update
This commit is contained in:
+36
-15
@@ -3,6 +3,7 @@ from django.contrib.auth import authenticate, login
|
||||
from django.contrib.auth.decorators import login_required, user_passes_test
|
||||
from django.contrib.auth.forms import AuthenticationForm
|
||||
from django.contrib.auth.hashers import make_password
|
||||
from django.db import IntegrityError
|
||||
from django.db.models import Exists, OuterRef
|
||||
from django.http import JsonResponse
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
@@ -196,15 +197,13 @@ def add_comment(request, pk, parent_id=None):
|
||||
return redirect("issue_detail", pk=pk)
|
||||
|
||||
def superadmin_check(user):
|
||||
return user.is_superuser
|
||||
|
||||
return user.is_superuser
|
||||
|
||||
@login_required
|
||||
@user_passes_test(superadmin_check)
|
||||
def superadmin_dashboard(request):
|
||||
return render(request, "dashboard/superadmin_dashboard.html")
|
||||
|
||||
|
||||
@login_required
|
||||
@user_passes_test(superadmin_check)
|
||||
def manage_departments(request):
|
||||
@@ -228,19 +227,41 @@ def department_detail(request, pk):
|
||||
users = department.users.all()
|
||||
|
||||
if request.method == "POST":
|
||||
username = request.POST.get("username")
|
||||
email = request.POST.get("email")
|
||||
password = request.POST.get("password")
|
||||
# ---- Create user ----
|
||||
if "create_user" in request.POST:
|
||||
username = request.POST.get("username", "").strip()
|
||||
email = request.POST.get("email", "").strip()
|
||||
password = request.POST.get("password", "").strip()
|
||||
if username and password:
|
||||
try:
|
||||
user = User.objects.create_user(
|
||||
username=username,
|
||||
email=email,
|
||||
password=password
|
||||
)
|
||||
user.is_staff = True
|
||||
user.save()
|
||||
department.users.add(user)
|
||||
messages.success(request, f"User '{username}' created and added to department.")
|
||||
except IntegrityError:
|
||||
messages.error(request, "Username already exists.")
|
||||
|
||||
if username and password:
|
||||
user = User.objects.create(
|
||||
username=username,
|
||||
email=email,
|
||||
password=make_password(password), # hash the password
|
||||
is_staff=True # mark as staff
|
||||
)
|
||||
department.users.add(user)
|
||||
return redirect("department_detail", pk=department.id)
|
||||
# ---- Assign admin ----
|
||||
elif "assign_admin" in request.POST:
|
||||
user_id = request.POST.get("admin_user_id")
|
||||
if user_id:
|
||||
user = get_object_or_404(User, id=user_id)
|
||||
department.admin = user
|
||||
department.save()
|
||||
messages.success(request, f"{user.username} is now the admin of {department.name}.")
|
||||
|
||||
# ---- Remove admin ----
|
||||
elif "remove_admin" in request.POST:
|
||||
department.admin = None
|
||||
department.save()
|
||||
messages.info(request, "Department admin removed.")
|
||||
|
||||
return redirect("department_detail", pk=department.id)
|
||||
|
||||
return render(request, "department/department_detail.html", {
|
||||
"department": department,
|
||||
|
||||
Reference in New Issue
Block a user