Esempio n. 1
0
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})
Esempio n. 2
0
 def test_create_poll_choices_filled_but_deleted(self):
     """
     TopicPollChoiceFormSet, create
     """
     form_data = {'choices-TOTAL_FORMS': 2, 'choices-INITIAL_FORMS': 0,
                  'choices-0-description': 'op1', 'choices-0-DELETE': "on",
                  'choices-1-description': 'op2', 'choices-1-DELETE': "on"}
     form = TopicPollChoiceFormSet(can_delete=True, data=form_data)
     self.assertTrue(form.is_valid())
     self.assertFalse(form.is_filled())
Esempio n. 3
0
 def test_create_poll_choices_unfilled(self):
     """
     TopicPollChoiceFormSet
     """
     form_data = {'choices-TOTAL_FORMS': 2, 'choices-INITIAL_FORMS': 0,
                  'choices-0-description': '',
                  'choices-1-description': ''}
     form = TopicPollChoiceFormSet(data=form_data)
     self.assertTrue(form.is_valid())
     self.assertFalse(form.is_filled())
Esempio n. 4
0
 def test_create_poll_choices(self):
     """
     TopicPollChoiceFormSet
     Check it's valid and is filled
     """
     form_data = {'choices-TOTAL_FORMS': 2, 'choices-INITIAL_FORMS': 0,
                  'choices-0-description': 'op1',
                  'choices-1-description': 'op2'}
     form = TopicPollChoiceFormSet(data=form_data)
     self.assertTrue(form.is_valid())
     self.assertTrue(form.is_filled())
Esempio n. 5
0
 def test_update_poll_choices_filled_but_deleted(self):
     """
     TopicPollChoiceFormSet, update
     is_filled should not be called when updating (coz form is always filled), but whatever
     """
     poll = TopicPoll.objects.create(topic=self.topic)
     form_data = {'choices-TOTAL_FORMS': 2, 'choices-INITIAL_FORMS': 0,
                  'choices-0-description': 'op1', 'choices-0-DELETE': "on",
                  'choices-1-description': 'op2', 'choices-1-DELETE': "on"}
     form = TopicPollChoiceFormSet(can_delete=True, data=form_data, instance=poll)
     self.assertTrue(form.is_valid())
     self.assertTrue(form.is_filled())
Esempio n. 6
0
 def test_create_poll_choices(self):
     """
     TopicPollChoiceFormSet
     Check it's valid and is filled
     """
     form_data = {
         "choices-TOTAL_FORMS": 2,
         "choices-INITIAL_FORMS": 0,
         "choices-0-description": "op1",
         "choices-1-description": "op2",
     }
     form = TopicPollChoiceFormSet(data=form_data)
     self.assertTrue(form.is_valid())
     self.assertTrue(form.is_filled())
Esempio n. 7
0
 def test_create_poll_choices_filled_but_deleted(self):
     """
     TopicPollChoiceFormSet, create
     """
     form_data = {
         "choices-TOTAL_FORMS": 2,
         "choices-INITIAL_FORMS": 0,
         "choices-0-description": "op1",
         "choices-0-DELETE": "on",
         "choices-1-description": "op2",
         "choices-1-DELETE": "on",
     }
     form = TopicPollChoiceFormSet(can_delete=True, data=form_data)
     self.assertTrue(form.is_valid())  # not enough choices, but since we are NOT updating this is valid
     self.assertFalse(form.is_filled())
Esempio n. 8
0
def poll_update(request, pk):
    poll = get_object_or_404(TopicPoll, pk=pk, topic__user=request.user)

    if request.method == 'POST':
        form = TopicPollForm(data=request.POST, instance=poll)
        formset = TopicPollChoiceFormSet(data=request.POST, instance=poll)

        if form.is_valid() and formset.is_valid():
            poll = form.save()
            choices = formset.save()
            return redirect(request.POST.get('next', poll.get_absolute_url()))
    else:
        form = TopicPollForm(instance=poll)
        formset = TopicPollChoiceFormSet(instance=poll)

    return render(request, 'spirit/topic_poll/poll_update.html', {'form': form, 'formset': formset})
Esempio n. 9
0
def poll_update(request, pk):
    poll = get_object_or_404(TopicPoll, pk=pk, topic__user=request.user)

    if request.method == 'POST':
        form = TopicPollForm(data=request.POST, instance=poll)
        formset = TopicPollChoiceFormSet(data=request.POST, instance=poll)

        if form.is_valid() and formset.is_valid():
            poll = form.save()
            choices = formset.save()
            return redirect(request.POST.get('next', poll.get_absolute_url()))
    else:
        form = TopicPollForm(instance=poll)
        formset = TopicPollChoiceFormSet(instance=poll)

    return render(request, 'spirit/topic_poll/poll_update.html', {'form': form, 'formset': formset})
Esempio n. 10
0
File: topic.py Progetto: gone/Spirit
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
    })