feat: status transition and allowed fields consolidated

This commit is contained in:
2025-06-02 22:12:56 +02:00
parent a9e32034a7
commit 5205f4051c
3 changed files with 75 additions and 69 deletions

View File

@@ -40,8 +40,8 @@
<label class="block text-sm font-medium mb-1">Kurs:</label>
<select name="course"
id="id_course"
{% if not view.can_edit %}disabled{% endif %}
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 {% if not view.can_edit %}bg-gray-100{% endif %}">
{% if not view.can_edit or form.course.field.disabled %}disabled{% endif %}
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 {% if not view.can_edit or form.course.field.disabled %}bg-gray-100{% endif %}">
{% for course in form.course.field.queryset %}
<option value="{{ course.pk }}"
{% if course.pk == ticket.course.pk %}selected{% endif %}>{{ course }}</option>
@@ -52,8 +52,8 @@
<label class="block text-sm font-medium mb-1">Material:</label>
<select name="material"
id="id_material"
{% if not view.can_edit %}disabled{% endif %}
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 {% if not view.can_edit %}bg-gray-100{% endif %}">
{% if not view.can_edit or form.material.field.disabled %}disabled{% endif %}
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 {% if not view.can_edit or form.material.field.disabled %}bg-gray-100{% endif %}">
{% for value, display in form.fields.material.choices %}
<option value="{{ value }}"
{% if form.material.value == value %}selected{% endif %}>{{ display }}</option>
@@ -65,19 +65,20 @@
<div>
<label class="block text-sm font-medium mb-1">Status:</label>
<select name="status"
{% if not view.can_edit %}disabled{% endif %}
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 {% if not view.can_edit %}bg-gray-100{% endif %}">
{% if not view.can_edit or form.status.field.disabled %}disabled{% endif %}
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 {% if not view.can_edit or form.status.field.disabled %}bg-gray-100{% endif %}">
{% for value, label in form.status.field.choices %}
<option value="{{ value }}"
{% if value == ticket.status %}selected{% endif %}>{{ label }}</option>
{% endfor %}
</select>
{% if form.status.errors %}<div class="text-red-600 text-sm mt-1">{{ form.status.errors }}</div>{% endif %}
</div>
<div>
<label class="block text-sm font-medium mb-1">Priorität:</label>
<select name="priority"
{% if not view.can_edit %}disabled{% endif %}
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 {% if not view.can_edit %}bg-gray-100{% endif %}">
{% if not view.can_edit or form.priority.field.disabled %}disabled{% endif %}
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 {% if not view.can_edit or form.priority.field.disabled %}bg-gray-100{% endif %}">
<option value="low" {% if ticket.priority == 'low' %}selected{% endif %}>Niedrig</option>
<option value="medium"
{% if ticket.priority == 'medium' %}selected{% endif %}>Normal</option>
@@ -123,7 +124,7 @@
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:'' }}</textarea>
{% if form.answer.errors %}<div class="text-red-600 text-sm mt-1">{{ form.answer.errors }}</div>{% endif %}
<p class="text-xs text-gray-500 mt-1">
{% if ticket.status != 'resolved' %}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 %}
</p>
{% endif %}
</div>
@@ -233,7 +234,7 @@
const answerLabel = answerField.previousElementSibling;
function toggleAnswerField() {
if (statusSelect.value === 'resolved') {
if (statusSelect.value === 'resolved' || statusSelect.value === 'closed') {
answerField.disabled = false;
answerField.classList.remove('bg-gray-100', 'cursor-not-allowed');
answerField.classList.add('bg-white');