feat: added ticket history
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user