feat: auto select tutor as assignee
This commit is contained in:
@@ -3,7 +3,7 @@ from django.views.generic.edit import CreateView, UpdateView
|
||||
from django.urls import reverse_lazy
|
||||
from django.views.generic.detail import DetailView
|
||||
from django.views.generic.edit import FormMixin
|
||||
from .forms import CommentForm
|
||||
from .forms import CommentForm, TicketForm
|
||||
from django.urls import reverse
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib import messages
|
||||
@@ -60,9 +60,10 @@ class TicketListView(ListView):
|
||||
context["status_choices"] = Ticket.STATUS_CHOICES
|
||||
return context
|
||||
|
||||
|
||||
class TicketDetailUpdateView(UpdateView):
|
||||
model = Ticket
|
||||
fields = ["title", "description", "status", "priority", "assigned_to", "course"]
|
||||
form_class = TicketForm # Verwende das custom Form anstatt fields
|
||||
template_name = "ticketsystem/detail.html"
|
||||
comment_form_class = CommentForm
|
||||
|
||||
@@ -93,25 +94,29 @@ class TicketDetailUpdateView(UpdateView):
|
||||
def form_valid(self, form):
|
||||
ticket = form.instance
|
||||
original = Ticket.objects.get(pk=ticket.pk)
|
||||
|
||||
# Alten assigned_to Wert merken für History
|
||||
old_assigned_to = original.assigned_to
|
||||
|
||||
response = super().form_valid(form) # Speichert das Ticket
|
||||
|
||||
# History tracking für geänderte Felder
|
||||
tracked_fields = ["title", "description", "status", "priority", "assigned_to", "course"]
|
||||
tracked_fields = ["title", "description", "status", "priority", "course"]
|
||||
for field in tracked_fields:
|
||||
if field in form.changed_data:
|
||||
old_value = getattr(original, field)
|
||||
new_value = form.cleaned_data.get(field)
|
||||
|
||||
# Für ForeignKey Felder den Display-Namen verwenden
|
||||
if field == "assigned_to":
|
||||
old_value = old_value.username if old_value else "Niemand"
|
||||
new_value = new_value.username if new_value else "Niemand"
|
||||
elif field == "status":
|
||||
if field == "status":
|
||||
old_value = original.get_status_display()
|
||||
new_value = ticket.get_status_display()
|
||||
elif field == "priority":
|
||||
old_value = original.get_priority_display()
|
||||
new_value = ticket.get_priority_display()
|
||||
elif field == "course":
|
||||
old_value = str(old_value)
|
||||
new_value = str(new_value)
|
||||
|
||||
TicketHistory.objects.create(
|
||||
ticket=ticket,
|
||||
@@ -121,12 +126,28 @@ class TicketDetailUpdateView(UpdateView):
|
||||
new_value=str(new_value),
|
||||
)
|
||||
|
||||
if form.changed_data:
|
||||
if "course" in form.changed_data and old_assigned_to != ticket.assigned_to:
|
||||
old_name = old_assigned_to.username if old_assigned_to else "Niemand"
|
||||
new_name = ticket.assigned_to.username if ticket.assigned_to else "Niemand"
|
||||
TicketHistory.objects.create(
|
||||
ticket=ticket,
|
||||
changed_by=self.request.user,
|
||||
field="assigned_to",
|
||||
old_value=old_name,
|
||||
new_value=new_name,
|
||||
)
|
||||
# Erweitere die changed_data Liste für die Nachricht
|
||||
changed_fields = list(form.changed_data)
|
||||
if "assigned_to" not in changed_fields:
|
||||
changed_fields.append("assigned_to (automatisch)")
|
||||
else:
|
||||
changed_fields = form.changed_data
|
||||
|
||||
if changed_fields:
|
||||
messages.success(
|
||||
self.request,
|
||||
f"Ticket erfolgreich aktualisiert. Geänderte Felder: {', '.join(form.changed_data)}",
|
||||
f"Ticket erfolgreich aktualisiert. Geänderte Felder: {', '.join(changed_fields)}",
|
||||
)
|
||||
|
||||
return response
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
@@ -168,7 +189,7 @@ class AssignedTicketListView(LoginRequiredMixin, ListView):
|
||||
|
||||
class TicketCreateView(CreateView):
|
||||
model = Ticket
|
||||
fields = ["title", "description", "status", "priority", "assigned_to", "course"]
|
||||
form_class = TicketForm
|
||||
template_name = "ticketsystem/ticket_form.html"
|
||||
|
||||
def form_valid(self, form):
|
||||
|
||||
Reference in New Issue
Block a user