diff --git a/vergabe_teilnahme/apps/feedback/urls.py b/vergabe_teilnahme/apps/feedback/urls.py index fc10e38..a1e7dfd 100644 --- a/vergabe_teilnahme/apps/feedback/urls.py +++ b/vergabe_teilnahme/apps/feedback/urls.py @@ -8,5 +8,5 @@ urlpatterns = [ path('modal/', views.modal, name='modal'), path('', views.submit, name='submit'), path('backlog/', views.backlog, name='backlog'), - path('backlog//status/', views.status_aendern, name='status_aendern'), + path('backlog//bearbeiten/', views.eintrag_bearbeiten, name='eintrag_bearbeiten'), ] diff --git a/vergabe_teilnahme/apps/feedback/views.py b/vergabe_teilnahme/apps/feedback/views.py index 34c3854..e590146 100644 --- a/vergabe_teilnahme/apps/feedback/views.py +++ b/vergabe_teilnahme/apps/feedback/views.py @@ -65,17 +65,32 @@ def backlog(request): return render(request, 'feedback/backlog.html', ctx) +def _eintrag_ctx(eintrag): + return { + 'eintrag': eintrag, + 'status_choices': Feedbackeintrag.STATUS_CHOICES, + 'kategorie_choices': Feedbackeintrag.KATEGORIE_CHOICES, + 'dringlichkeit_choices': Feedbackeintrag.DRINGLICHKEIT_CHOICES, + } + + @require_POST -def status_aendern(request, pk): +def eintrag_bearbeiten(request, pk): eintrag = get_object_or_404(Feedbackeintrag, pk=pk) - neuer_status = request.POST.get('status') - if neuer_status in dict(Feedbackeintrag.STATUS_CHOICES): - eintrag.status = neuer_status - bewertung = request.POST.get('bewertung') - if bewertung is not None: - eintrag.bewertung = bewertung - entscheidung = request.POST.get('entscheidung') - if entscheidung is not None: - eintrag.entscheidung = entscheidung + for field, choices in [ + ('status', Feedbackeintrag.STATUS_CHOICES), + ('kategorie', Feedbackeintrag.KATEGORIE_CHOICES), + ('dringlichkeit', Feedbackeintrag.DRINGLICHKEIT_CHOICES), + ]: + val = request.POST.get(field) + if val and val in dict(choices): + setattr(eintrag, field, val) + for field in ('beschreibung', 'bewertung', 'entscheidung'): + val = request.POST.get(field) + if val is not None: + setattr(eintrag, field, val) + titel = request.POST.get('titel', '').strip() + if titel: + eintrag.titel = titel eintrag.save() - return render(request, 'feedback/partials/eintrag_zeile.html', {'eintrag': eintrag}) + return render(request, 'feedback/partials/eintrag_zeile.html', _eintrag_ctx(eintrag)) diff --git a/vergabe_teilnahme/templates/feedback/backlog.html b/vergabe_teilnahme/templates/feedback/backlog.html index 43899fc..121c632 100644 --- a/vergabe_teilnahme/templates/feedback/backlog.html +++ b/vergabe_teilnahme/templates/feedback/backlog.html @@ -43,11 +43,9 @@ Datum - - {% for eintrag in eintraege %} - {% include "feedback/partials/eintrag_zeile.html" with status_choices=status_choices %} - {% endfor %} - + {% for eintrag in eintraege %} + {% include "feedback/partials/eintrag_zeile.html" %} + {% endfor %} {% else %}

Keine Einträge gefunden.

diff --git a/vergabe_teilnahme/templates/feedback/partials/eintrag_zeile.html b/vergabe_teilnahme/templates/feedback/partials/eintrag_zeile.html index b480ff3..f9b3e29 100644 --- a/vergabe_teilnahme/templates/feedback/partials/eintrag_zeile.html +++ b/vergabe_teilnahme/templates/feedback/partials/eintrag_zeile.html @@ -1,39 +1,115 @@ - - - {{ eintrag.titel|truncatechars:60 }} - {% if eintrag.ausschreibung %} - {{ eintrag.ausschreibung.titel|truncatechars:40 }} - {% endif %} - - {{ eintrag.beschreibung|truncatechars:100 }} - - - {{ eintrag.get_kategorie_display }} - - - - - {{ eintrag.get_dringlichkeit_display }} - - - -
- {% csrf_token %} - -
- - {{ eintrag.datum|date:"d.m.Y" }} - + + + {# display row #} + + + + + + {{ eintrag.titel }} + {% if eintrag.ausschreibung %} + {{ eintrag.ausschreibung.titel|truncatechars:40 }} + {% endif %} + + + + {{ eintrag.beschreibung|truncatechars:120 }} + + + {{ eintrag.get_kategorie_display }} + + + + + {{ eintrag.get_dringlichkeit_display }} + + + +
+ {% csrf_token %} + +
+ + {{ eintrag.datum|date:"d.m.Y" }} + + + {# edit row #} + + +
+ {% csrf_token %} +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + + +