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, 'foro/topic/topic_publish.html', {'form': form, 'cform': cform, 'pform': pform, 'pformset': pformset})
def topic_update(request, pk): topic = Topic.objects.for_update_or_404(pk, request.user) if request.method == 'POST': form = TopicForm(user=request.user, data=request.POST, instance=topic) category_id = topic.category_id if form.is_valid(): topic = form.save() if topic.category_id != category_id: topic_post_moderate.send(sender=topic.__class__, user=request.user, topic=topic, action=MOVED) return redirect(request.POST.get('next', topic.get_absolute_url())) else: form = TopicForm(user=request.user, instance=topic) return render(request, 'foro/topic/topic_update.html', {'form': form, })
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, 'foro/topic/topic_publish.html', { 'form': form, 'cform': cform, 'pform': pform, 'pformset': pformset })
def topic_update(request, pk): topic = Topic.objects.for_update_or_404(pk, request.user) if request.method == 'POST': form = TopicForm(user=request.user, data=request.POST, instance=topic) category_id = topic.category_id if form.is_valid(): topic = form.save() if topic.category_id != category_id: topic_post_moderate.send(sender=topic.__class__, user=request.user, topic=topic, action=MOVED) return redirect(request.POST.get('next', topic.get_absolute_url())) else: form = TopicForm(user=request.user, instance=topic) return render(request, 'foro/topic/topic_update.html', { 'form': form, })