예제 #1
0
파일: question.py 프로젝트: reshama/editor
    def form_valid(self, form):
        owner = self.request.user

        source = form.instance.source
        destination = form.instance.destination

        self.pr = QuestionPullRequest(
            owner=owner, source=source, destination=destination, comment=form.instance.comment
        )
        try:
            self.pr.full_clean()
        except ValidationError as e:
            return redirect("question_compare", args=(source.pk, destination.pk))

        if self.pr.destination.can_be_edited_by(owner):
            self.pr.merge(owner)
            messages.add_message(
                self.request,
                messages.SUCCESS,
                render_to_string("question/pullrequest_accepted_message.html", {"pr": self.pr}),
            )
            return redirect("question_edit", self.pr.destination.pk, self.pr.destination.slug)
        else:
            self.pr.save()
            messages.add_message(
                self.request,
                messages.INFO,
                render_to_string("question/pullrequest_created_message.html", {"pr": self.pr}),
            )
            return redirect("question_edit", self.pr.source.pk, self.pr.source.slug)
예제 #2
0
파일: question.py 프로젝트: reshama/editor
class CreatePullRequestView(generic.CreateView):
    model = QuestionPullRequest
    template_name = "question/pullrequest.html"
    fields = ["source", "destination", "comment"]

    def form_valid(self, form):
        owner = self.request.user

        source = form.instance.source
        destination = form.instance.destination

        self.pr = QuestionPullRequest(
            owner=owner, source=source, destination=destination, comment=form.instance.comment
        )
        try:
            self.pr.full_clean()
        except ValidationError as e:
            return redirect("question_compare", args=(source.pk, destination.pk))

        if self.pr.destination.can_be_edited_by(owner):
            self.pr.merge(owner)
            messages.add_message(
                self.request,
                messages.SUCCESS,
                render_to_string("question/pullrequest_accepted_message.html", {"pr": self.pr}),
            )
            return redirect("question_edit", self.pr.destination.pk, self.pr.destination.slug)
        else:
            self.pr.save()
            messages.add_message(
                self.request,
                messages.INFO,
                render_to_string("question/pullrequest_created_message.html", {"pr": self.pr}),
            )
            return redirect("question_edit", self.pr.source.pk, self.pr.source.slug)

    def get_context_data(self, *args, **kwargs):
        context = super(CreatePullRequestView, self).get_context_data(**kwargs)

        context["source"] = Question.objects.get(pk=self.kwargs["source"])
        context["destination"] = Question.objects.get(pk=self.kwargs["destination"])

        return context