feat: added ticket history

This commit is contained in:
2025-05-05 18:33:23 +02:00
parent e0ff4dde70
commit afa44011d0
3 changed files with 54 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib import messages
from django.shortcuts import redirect
from .models import Ticket
from .models import Ticket, TicketHistory
class HomeView(TemplateView):
@@ -63,6 +63,7 @@ class TicketDetailView(FormMixin, DetailView):
context["form"] = self.get_form()
return context
class TicketCreateView(CreateView):
model = Ticket
fields = ["title", "description", "priority", "assigned_to"] # user & status wird automatisch gesetzt
@@ -74,6 +75,7 @@ class TicketCreateView(CreateView):
form.instance.status = "open" # Neues Ticket beginnt immer als "offen"
return super().form_valid(form)
class TicketUpdateView(LoginRequiredMixin, UpdateView):
model = Ticket
fields = ["title", "description", "status", "priority", "assigned_to"]
@@ -90,3 +92,24 @@ class TicketUpdateView(LoginRequiredMixin, UpdateView):
def get_queryset(self):
return Ticket.objects.all() # Optional: Nur eigene Tickets bearbeiten lassen?
def form_valid(self, form):
ticket = form.instance
original = Ticket.objects.get(pk=ticket.pk)
response = super().form_valid(form) # Speichert das Ticket
tracked_fields = ["status", "description"]
for field in tracked_fields:
if field in form.changed_data:
old_value = getattr(original, field)
new_value = form.cleaned_data.get(field)
TicketHistory.objects.create(
ticket=ticket,
changed_by=self.request.user,
field=field,
old_value=str(old_value),
new_value=str(new_value),
)
return response