def moderate_event()

in moderator/moderate/views.py [0:0]


def moderate_event(request, slug, q_id=None, accepted=None):
    event = get_object_or_404(Event, slug=slug)
    user = request.user

    if not (event.moderators.filter(pk=user.pk).exists() or user.is_superuser):
        raise Http404

    questions = Question.objects.filter(event=event, is_accepted__isnull=True)
    question_form = QuestionForm()

    # Update the question if it's accepted or rejected
    if q_id:
        try:
            question = Question.objects.get(id=q_id)
        except Question.DoesNotExist:
            raise ValidationError("This question is not valid")
        question.is_accepted = accepted
        question.save()

        if request.method == "POST":
            question_form = QuestionForm(request.POST, instance=question)
            # update the question with moderator's reply
            if question_form.is_valid():
                reason = question_form.cleaned_data.get("rejection_reason")
                Question.objects.filter(id=question.pk).update(rejection_reason=reason)
                if (
                    reason
                    and not question.is_accepted
                    and question.submitter_contact_info
                ):
                    send_mail(
                        SUBJECT,
                        reason,
                        settings.FROM_NOREPLY,
                        [question.submitter_contact_info],
                    )
                    messages.success(request, "Email sent successfully")
                return redirect(reverse("moderate_event", kwargs={"slug": event.slug}))

    return render(
        request,
        "moderation.jinja",
        {"user": user, "event": event, "questions": questions, "q_form": question_form},
    )