Exemple #1
0
def add_review(request, review_id=None, ticket_id=None):
    """
    Display and handle the :model:`reviews.forms.ReviewForm` used
    to add and edit :model:`reviews.Review` instances.

    **Context**

    ``form``
        An instance of the :model:`reviews.forms.ReviewForm`

    ``review_instance``
        An instance of the :model:`reviews.Review`  # Not currently used from the Template

    **Template:**

    :template:'reviews/review.html'

    **Redirect:**

    Use the '_source' session parameter set by either 'main_page' or 'user_posts' views
    in order to redirect to the approrpiate view whenthe forms are validated.

    """

    print("add_review:", request.method, review_id, ticket_id)

    review_instance = get_object_or_404(Review, pk=review_id) if review_id else None

    if review_id is not None:
        ticket_instance = review_instance.ticket
    else:
        ticket_instance = get_object_or_404(Ticket, pk=ticket_id) if ticket_id else None

    if request.method == "GET":

        form = ReviewForm(instance=review_instance)

        return render(request, "reviews/review.html", locals())

    elif request.method == "POST":

        form = ReviewForm(request.POST, request.FILES, instance=review_instance)

        if form.is_valid():
            new_review_instance = form.save(commit=False)
            new_review_instance.ticket = ticket_instance
            new_review_instance.user = request.user
            new_review_instance.save()

            return redirect_flux(request.session.get("_source"))

        return render(request, "reviews/review.html", locals())
Exemple #2
0
 def get_context_data(self, **kwargs):
     context_data = super().get_context_data(**kwargs)
     context_data['review_form'] = ReviewForm(**self.get_form_kwargs())
     context_data['approve_form'] = ReviewApproveForm(**self.get_form_kwargs())
     context_data['self_review'] = SelfReview.objects.get(user=self.object.target,
                                                          interval=self.object.interval)
     context_data['previous_review'] = (Review.visible_to_reviewer.filter(target=self.object.target,
                                                                          reviewer=self.object.reviewer)
                                                                  .exclude(interval=self.current_interval)
                                                                  .order_by('interval__name').last())
     return context_data