Files
korrekturmanagementsystem/ticketsystem/forms.py
2025-05-31 01:14:49 +02:00

55 lines
1.7 KiB
Python

from django import forms
from .models import Comment, Ticket
from django.core.exceptions import ValidationError
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ["text"]
widgets = {
"text": forms.Textarea(
attrs={"rows": 3, "placeholder": "Kommentar schreiben..."}
),
}
class TicketForm(forms.ModelForm):
class Meta:
model = Ticket
fields = ["title", "description", "status", "priority", "course", "answer"]
widgets = {
'answer': forms.Textarea(attrs={
'rows': 4,
'placeholder': 'Beschreibe die Lösung des Problems...'
})
}
def clean(self):
cleaned_data = super().clean()
status = cleaned_data.get('status')
answer = cleaned_data.get('answer')
# Wenn Status auf "gelöst" gesetzt wird, muss eine Antwort vorhanden sein
if status == 'resolved' and not answer:
raise ValidationError({
'answer': 'Eine Antwort ist erforderlich, wenn der Status auf "Gelöst" gesetzt wird.'
})
return cleaned_data
def save(self, commit=True):
ticket = super().save(commit=False)
# Automatische Tutor-Zuweisung basierend auf dem ausgewählten Kurs
if ticket.course and ticket.course.tutor:
ticket.assigned_to = ticket.course.tutor
# Setze answered_at wenn eine Antwort gegeben wird
if ticket.answer and not ticket.answered_at:
from django.utils import timezone
ticket.answered_at = timezone.now()
if commit:
ticket.save()
return ticket