diff --git a/ticketsystem/forms.py b/ticketsystem/forms.py index b458e6d..d431f7f 100644 --- a/ticketsystem/forms.py +++ b/ticketsystem/forms.py @@ -38,7 +38,7 @@ class TicketForm(forms.ModelForm): class Meta: model = Ticket - fields = ["title", "description", "status", "priority", "course", "answer", "material"] + fields = ["title", "description", "status", "mistake", "course", "answer", "material"] widgets = { 'answer': forms.Textarea(attrs={ 'rows': 4, @@ -68,14 +68,17 @@ class TicketForm(forms.ModelForm): def _set_field_permissions(self, is_tutor, is_creator, is_superuser): """Setzt welche Felder bearbeitet werden dürfen""" - if is_tutor and not is_superuser: + if self.ticket.status == 'resolved' and is_creator and not is_superuser: + for field_name in self.fields: + if field_name == "answer": + self.fields[field_name].disabled = True + elif is_tutor and not is_superuser: # Tutor darf ändern: readonly_fields = ['title', 'description', 'material'] for field_name in readonly_fields: if field_name in self.fields: self.fields[field_name].disabled = True elif is_creator and not is_superuser and self.ticket.status != 'resolved': - # Creator darf ändern bei resolved for field_name in self.fields: self.fields[field_name].disabled = True diff --git a/ticketsystem/models.py b/ticketsystem/models.py index 1ad4603..bff57f6 100644 --- a/ticketsystem/models.py +++ b/ticketsystem/models.py @@ -39,10 +39,14 @@ class Ticket(models.Model): ("closed", "Geschlossen"), ] - PRIORITY_CHOICES = [ - ("low", "Niedrig"), - ("medium", "Mittel"), - ("high", "Hoch"), + MISTAKE_CHOICES = [ + ("typo", "Tippfehler"), + ("formatting_issue", "Formatierungsfehler"), + ("missing_content", "Fehlender Inhalt"), + ("outdated_content", "Veralteter Inhalt"), + ("audio_problem", "Audio-Problem"), + ("video_problem", "Video-Problem"), + ("other", "Sonstiges"), ] MATERIAL_CHOICES = [ @@ -58,7 +62,7 @@ class Ticket(models.Model): title = models.CharField(max_length=200) description = models.TextField() status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="new") - priority = models.CharField(max_length=10, choices=PRIORITY_CHOICES, default="medium") + mistake = models.CharField(max_length=20, choices=MISTAKE_CHOICES, default="medium") material = models.CharField(max_length=20, choices=MATERIAL_CHOICES, default="script") answer = models.TextField( @@ -89,7 +93,7 @@ class Ticket(models.Model): updated_at = models.DateTimeField(auto_now=True) def __str__(self): - return f"[{self.get_priority_display()}] {self.title} ({self.get_status_display()})" + return f"[{self.get_mistake_display()}] {self.title} ({self.get_status_display()})" class Comment(models.Model): diff --git a/ticketsystem/templates/ticketsystem/detail.html b/ticketsystem/templates/ticketsystem/detail.html index a50a4fb..16cc9b2 100644 --- a/ticketsystem/templates/ticketsystem/detail.html +++ b/ticketsystem/templates/ticketsystem/detail.html @@ -76,13 +76,13 @@
- + {% for value, label in form.mistake.field.choices %} + + {% endfor %}
@@ -124,7 +124,9 @@ class="w-full p-2 border border-gray-300 rounded shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 placeholder:text-black {% if not view.can_edit or ticket.status != 'resolved' %}bg-gray-100 cursor-not-allowed{% endif %}">{{ ticket.answer|default:'' }} {% if form.answer.errors %}
{{ form.answer.errors }}
{% endif %}

- {% if ticket.status != 'resolved' or ticket.status != 'closed' %}Eine Antwort ist erforderlich beim Setzen des Status auf "Gelöst"{% endif %} + {% if ticket.status != 'resolved' or ticket.status != 'closed' %} + Eine Antwort ist erforderlich beim Setzen des Status auf "Gelöst" + {% endif %}

{% endif %} diff --git a/ticketsystem/templates/ticketsystem/index.html b/ticketsystem/templates/ticketsystem/index.html index 48a4ddb..e74012a 100644 --- a/ticketsystem/templates/ticketsystem/index.html +++ b/ticketsystem/templates/ticketsystem/index.html @@ -132,7 +132,7 @@ # Titel Status - Priorität + Fehlerart Zugewiesen an Erstellt @@ -163,19 +163,7 @@ {% endif %} - {% if ticket.priority == 'low' %} - {{ ticket.get_priority_display }} - {% elif ticket.priority == 'medium' %} - - {{ ticket.get_priority_display }} - - {% elif ticket.priority == 'high' %} - - {{ ticket.get_priority_display }} - - {% elif ticket.priority == 'urgent' %} - {{ ticket.get_priority_display }} - {% endif %} + {{ ticket.get_mistake_display }} {% if ticket.assigned_to %} diff --git a/ticketsystem/templates/ticketsystem/ticket_form.html b/ticketsystem/templates/ticketsystem/ticket_form.html index a2855ff..249231a 100644 --- a/ticketsystem/templates/ticketsystem/ticket_form.html +++ b/ticketsystem/templates/ticketsystem/ticket_form.html @@ -93,15 +93,15 @@ {% if form.status.errors %}
{{ form.status.errors }}
{% endif %}
- - - {% for value, display in form.fields.priority.choices %} + {% for value, display in form.fields.mistake.choices %} + {% if form.mistake.value == value %}selected{% endif %}>{{ display }} {% endfor %} - {% if form.priority.errors %}
{{ form.priority.errors }}
{% endif %} + {% if form.mistake.errors %}
{{ form.mistake.errors }}
{% endif %}
diff --git a/ticketsystem/views.py b/ticketsystem/views.py index 5189ca0..1dcd050 100644 --- a/ticketsystem/views.py +++ b/ticketsystem/views.py @@ -128,7 +128,7 @@ class TicketDetailUpdateView(UpdateView): response = super().form_valid(form) # Speichert das Ticket # History tracking für geänderte Felder - tracked_fields = ["title", "description", "status", "priority", "course", "answer", "material"] + tracked_fields = ["title", "description", "status", "mistake", "course", "answer", "material"] for field in tracked_fields: if field in form.changed_data: old_value = getattr(original, field) @@ -138,9 +138,9 @@ class TicketDetailUpdateView(UpdateView): 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 == "mistake": + old_value = original.get_mistake_display() + new_value = ticket.get_mistake_display() elif field == "course": old_value = str(old_value) new_value = str(new_value) @@ -239,7 +239,7 @@ class TicketCreateView(CreateView): class TicketUpdateView(LoginRequiredMixin, UpdateView): model = Ticket - fields = ["title", "description", "status", "priority", "assigned_to", "course"] + fields = ["title", "description", "status", "mistake", "assigned_to", "course"] template_name = "ticketsystem/ticket_form.html" def dispatch(self, request, *args, **kwargs): @@ -259,7 +259,7 @@ class TicketUpdateView(LoginRequiredMixin, UpdateView): response = super().form_valid(form) # Speichert das Ticket - tracked_fields = ["status", "description", "priority"] + tracked_fields = ["status", "description", "mistake"] for field in tracked_fields: if field in form.changed_data: old_value = getattr(original, field)