diff --git a/korrekturmanagementsystem/middleware.py b/korrekturmanagementsystem/middleware.py
index 7f84ed6..0a70be9 100644
--- a/korrekturmanagementsystem/middleware.py
+++ b/korrekturmanagementsystem/middleware.py
@@ -1,6 +1,7 @@
from django.urls import reverse_lazy
from django.http import HttpResponseRedirect
+
class LoginRequiredMiddleware:
def __init__(self, get_response):
self.get_response = get_response
diff --git a/ticketsystem/templates/ticketsystem/assigned_tickets.html b/ticketsystem/templates/ticketsystem/assigned_tickets.html
new file mode 100644
index 0000000..07e6016
--- /dev/null
+++ b/ticketsystem/templates/ticketsystem/assigned_tickets.html
@@ -0,0 +1,69 @@
+{% extends "ticketsystem/base.html" %}
+{% block content %}
+
+
+
+
🧾 Meine zugewiesenen Tickets
+
+ Hinweis: Bereits geschlossene Tickets werden hier nicht aufgelistet.
+
+
+ {% for ticket in tickets %}
+
+ {% empty %}
+
Es sind derzeit keine Tickets vorhanden.
+ {% endfor %}
+
+{% endblock %}
diff --git a/ticketsystem/templates/ticketsystem/base.html b/ticketsystem/templates/ticketsystem/base.html
index 7549b75..67b6806 100644
--- a/ticketsystem/templates/ticketsystem/base.html
+++ b/ticketsystem/templates/ticketsystem/base.html
@@ -49,6 +49,7 @@
{% if user.is_authenticated %}
diff --git a/ticketsystem/urls.py b/ticketsystem/urls.py
index 050c972..d9669d3 100644
--- a/ticketsystem/urls.py
+++ b/ticketsystem/urls.py
@@ -7,6 +7,7 @@ from .views import (
TicketUpdateView,
HomeView,
TicketDetailView,
+ AssignedTicketListView
)
urlpatterns = [
@@ -19,4 +20,5 @@ urlpatterns = [
# /ticketsystem/new/
path("new/", TicketCreateView.as_view(), name="create"),
path("/modify/", TicketUpdateView.as_view(), name="modify"),
+ path("meine-tickets/", AssignedTicketListView.as_view(), name="assigned-tickets"),
]
diff --git a/ticketsystem/views.py b/ticketsystem/views.py
index 8e6925d..1e41a20 100644
--- a/ticketsystem/views.py
+++ b/ticketsystem/views.py
@@ -63,6 +63,18 @@ class TicketDetailView(FormMixin, DetailView):
return context
+class AssignedTicketListView(LoginRequiredMixin, ListView):
+ model = Ticket
+ template_name = "ticketsystem/assigned_tickets.html"
+ context_object_name = "tickets"
+ ordering = ["-created_at"]
+
+ def get_queryset(self):
+ return Ticket.objects.filter(
+ assigned_to=self.request.user
+ ).exclude(status="closed") # oder "geschlossen", je nach Wahl
+
+
class TicketCreateView(CreateView):
model = Ticket
fields = [
@@ -90,7 +102,7 @@ class TicketUpdateView(LoginRequiredMixin, UpdateView):
def dispatch(self, request, *args, **kwargs):
ticket = self.get_object()
user = request.user
- if user != ticket.assigned_to:
+ if user != ticket.assigned_to and not user.is_staff:
messages.error(request, "⛔ Du darfst dieses Ticket nicht bearbeiten.")
return redirect("detail", pk=ticket.pk)
return super().dispatch(request, *args, **kwargs)