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