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)
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