Versiunea funcțională EUMI
This commit is contained in:
+53
-2
@@ -1,3 +1,54 @@
|
||||
from django.shortcuts import render
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.http import HttpResponse
|
||||
from django.db.models import Q
|
||||
from .models import Employee
|
||||
from .forms import EmployeeForm
|
||||
|
||||
# Create your views here.
|
||||
|
||||
@login_required
|
||||
def user_list(request):
|
||||
query = request.GET.get("search", "")
|
||||
employees = Employee.objects.all().order_by("name")
|
||||
|
||||
if query:
|
||||
# Filter by name, username, or role (case-insensitive)
|
||||
employees = employees.filter(
|
||||
Q(name__icontains=query)
|
||||
| Q(username__icontains=query)
|
||||
| Q(role__icontains=query)
|
||||
)
|
||||
|
||||
context = {"employees": employees}
|
||||
|
||||
# If the request comes from HTMX, only return the table rows
|
||||
if request.headers.get("HX-Request"):
|
||||
return render(request, "users/partials/user_table.html", context)
|
||||
|
||||
# Otherwise, return the full page
|
||||
return render(request, "users/user_list.html", context)
|
||||
|
||||
|
||||
@login_required
|
||||
def employee_form(request, pk=None):
|
||||
if pk:
|
||||
employee = get_object_or_404(Employee, pk=pk)
|
||||
else:
|
||||
employee = None
|
||||
|
||||
if request.method == "POST":
|
||||
form = EmployeeForm(request.POST, instance=employee)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
# Return a 204 No Content response, but trigger custom HTMX events
|
||||
response = HttpResponse(status=204)
|
||||
response["HX-Trigger"] = "employeeListChanged, closeModal"
|
||||
return response
|
||||
else:
|
||||
form = EmployeeForm(instance=employee)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"users/partials/employee_form.html",
|
||||
{"form": form, "employee": employee},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user