from django.shortcuts import get_object_or_404, render from django.views.decorators.http import require_GET, require_POST from .models import Feedbackeintrag @require_GET def modal(request): return render(request, 'partials/feedback_modal.html') @require_POST def submit(request): beschreibung = request.POST.get('beschreibung', '').strip() if not beschreibung: return render(request, 'partials/feedback_modal.html', {'error': 'Beschreibung ist erforderlich.'}) entry = Feedbackeintrag( titel=request.POST.get('titel', 'Ohne Titel') or 'Ohne Titel', beschreibung=beschreibung, seite_kontext=request.POST.get('seite_kontext', ''), kategorie=request.POST.get('kategorie', 'hinweis'), dringlichkeit=request.POST.get('dringlichkeit', 'mittel'), ) ausschreibung_pk = request.POST.get('ausschreibung') if ausschreibung_pk: try: from vergabe_teilnahme.apps.ausschreibungen.models import Ausschreibung entry.ausschreibung = Ausschreibung.objects.get(pk=ausschreibung_pk) except (Ausschreibung.DoesNotExist, ValueError): pass if request.user.is_authenticated: entry.erfasst_von = request.user entry.save() return render(request, 'partials/feedback_success.html', {}) def backlog(request): qs = Feedbackeintrag.objects.select_related('erfasst_von', 'ausschreibung').all() status_filter = request.GET.get('status') if status_filter: qs = qs.filter(status=status_filter) kategorie_filter = request.GET.get('kategorie') if kategorie_filter: qs = qs.filter(kategorie=kategorie_filter) dringlichkeit_filter = request.GET.get('dringlichkeit') if dringlichkeit_filter: qs = qs.filter(dringlichkeit=dringlichkeit_filter) ctx = { 'eintraege': qs, 'status_choices': Feedbackeintrag.STATUS_CHOICES, 'kategorie_choices': Feedbackeintrag.KATEGORIE_CHOICES, 'dringlichkeit_choices': Feedbackeintrag.DRINGLICHKEIT_CHOICES, 'current_status': status_filter or '', 'current_kategorie': kategorie_filter or '', 'current_dringlichkeit': dringlichkeit_filter or '', 'breadcrumbs': [{'label': 'Feedback-Backlog', 'url': None}], } return render(request, 'feedback/backlog.html', ctx) @require_POST def status_aendern(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 eintrag.save() return render(request, 'feedback/partials/eintrag_zeile.html', {'eintrag': eintrag})