def topic_publish(request, category_id=None): if category_id: Category.objects.get_public_or_404(pk=category_id) if request.method == 'POST': form = TopicForm(user=request.user, data=request.POST) cform = CommentForm(user=request.user, data=request.POST) pform = TopicPollForm(data=request.POST) pformset = TopicPollChoiceFormSet(can_delete=False, data=request.POST) if not request.is_limited and form.is_valid() and cform.is_valid() \ and pform.is_valid() and pformset.is_valid(): # wrap in transaction.atomic? topic = form.save() cform.topic = topic comment = cform.save() comment_posted.send(sender=comment.__class__, comment=comment, mentions=cform.mentions) # Create a poll only if we have choices if pformset.is_filled(): pform.topic = topic poll = pform.save() pformset.instance = poll pformset.save() return redirect(topic.get_absolute_url()) else: form = TopicForm(user=request.user, initial={'category': category_id, }) cform = CommentForm() pform = TopicPollForm() pformset = TopicPollChoiceFormSet(can_delete=False) return render(request, 'spirit/topic/topic_publish.html', {'form': form, 'cform': cform, 'pform': pform, 'pformset': pformset})
def topic_publish(request, category_id=None): if category_id: Category.objects.get_public_or_404(pk=category_id) if request.method == 'POST': form = TopicForm(user=request.user, data=request.POST) cform = CommentForm(user=request.user, data=request.POST) pform = TopicPollForm(data=request.POST) pformset = TopicPollChoiceFormSet(can_delete=False, data=request.POST) if not request.is_limited and form.is_valid() and cform.is_valid() \ and pform.is_valid() and pformset.is_valid(): # wrap in transaction.atomic? topic = form.save() cform.topic = topic comment = cform.save() comment_posted.send(sender=comment.__class__, comment=comment, mentions=cform.mentions) # Create a poll only if we have choices if pformset.is_filled(): pform.topic = topic poll = pform.save() pformset.instance = poll pformset.save() return redirect(topic.get_absolute_url()) else: form = TopicForm(user=request.user, initial={ 'category': category_id, }) cform = CommentForm() pform = TopicPollForm() pformset = TopicPollChoiceFormSet(can_delete=False) return render(request, 'spirit/topic/topic_publish.html', { 'form': form, 'cform': cform, 'pform': pform, 'pformset': pformset })