Esempio n. 1
0
    def test_form_saving(self):
        QUESTION_POST = {
            'title': 'This is a title friend!',
            'body': 'This is the body friend!',
            'status': 'private'
        }

        form = QuestionForm(self.joe, QUESTION_POST)

        self.assertTrue(form.is_valid())

        question = form.save()

        self.assertEquals(question.status, 'private')
        self.assertEquals(question.name, None)
        self.assertEquals(question.email, None)
        self.assertEquals(question.title, 'This is a title friend!')
        self.assertEquals(question.body, 'This is the body friend!')
        self.assertEquals(question.user, self.joe)

        RESPONSE_POST = {'body': 'This is the response body friend!'}

        form = ResponseForm(self.joe, question, RESPONSE_POST)

        self.assertTrue(form.is_valid())

        response = form.save()

        self.assertEquals(response.status, 'inherit')
        self.assertEquals(response.name, None)
        self.assertEquals(response.email, None)
        self.assertEquals(response.body, 'This is the response body friend!')
        self.assertEquals(response.user, self.joe)
Esempio n. 2
0
def knowledge_ask(request, template='django_knowledge/ask.html'):

    if not user_can_ask_question(request.user):
        return redirect(reverse('knowledge_index'))

    if settings.LOGIN_REQUIRED and not request.user.is_authenticated():
        return HttpResponseRedirect(settings.LOGIN_URL +
                                    "?next=%s" % request.path)

    form = QuestionForm(request.user, request.POST or None)
    if request.method == 'POST' and form.is_valid():
        if request.user.is_authenticated(
        ) or not form.cleaned_data['phone_number']:
            question = form.save()
            return redirect(question.get_absolute_url())
        else:
            return redirect('knowledge_index')

    return render(
        request, template, {
            'request': request,
            'form': form,
            'categories': Category.objects.all(),
            'BASE_TEMPLATE': settings.BASE_TEMPLATE,
        })
Esempio n. 3
0
    def test_ALLOW_ANONYMOUS(self):
        self.assertFalse(settings.ALLOW_ANONYMOUS)

        self.assertEqual(
            None,
            QuestionForm(self.anon)
        )

        self.assertEqual(
            None,
            ResponseForm(self.anon, self.question)
        )

        ############# flip setting ##############
        settings.ALLOW_ANONYMOUS = not settings.ALLOW_ANONYMOUS
        ############# flip setting ##############

        self.assertNotEqual(
            None,
            QuestionForm(self.anon)
        )

        self.assertNotEqual(
            None,
            ResponseForm(self.anon, self.question)
        )

        form = QuestionForm(self.anon)
        self.assertNotIn('status', list(form.fields.keys()))

        # missing the name/email...
        QUESTION_POST = {
            'title': 'This is a title friend!',
            'body': 'This is the body friend!'
        }

        form = QuestionForm(self.anon, QUESTION_POST)
        self.assertFalse(form.is_valid())


        QUESTION_POST = {
            'name': 'Test Guy',
            'email': '*****@*****.**',
            'title': 'This is a title friend!',
            'body': 'This is the body friend!'
        }

        form = QuestionForm(self.anon, QUESTION_POST)
        self.assertTrue(form.is_valid())

        question = form.save()

        # question has no user and is public by default
        self.assertFalse(question.user)
        self.assertEqual(question.name, 'Test Guy')
        self.assertEqual(question.email, '*****@*****.**')
        self.assertEqual(question.status, 'public')

        ############# flip setting ##############
        settings.ALLOW_ANONYMOUS = not settings.ALLOW_ANONYMOUS
Esempio n. 4
0
    def test_form_saving(self):
        QUESTION_POST = {
            'user': self.joe.pk,
            'title': 'This is a title friend!',
            'body': 'This is the body friend!',
            'status': 'draft',
            'categories': ''
        }

        form = QuestionForm(self.joe, QUESTION_POST)

        self.assertTrue(form.is_valid())

        question = form.save()

        self.assertEquals(question.status, 'draft')
        self.assertEquals(question.name, None)
        self.assertEquals(question.email, None)
        self.assertEquals(question.title, 'This is a title friend!')
        self.assertEquals(question.body, 'This is the body friend!')
        self.assertEquals(question.user, self.joe)


        RESPONSE_POST = {
            'body': 'This is the response body friend!'
        }

        form = ResponseForm(self.joe, question, RESPONSE_POST)

        self.assertTrue(form.is_valid())

        response = form.save()

        self.assertEquals(response.status, 'inherit')
        self.assertEquals(response.name, None)
        self.assertEquals(response.email, None)
        self.assertEquals(response.body, 'This is the response body friend!')
        self.assertEquals(response.user, self.joe)
Esempio n. 5
0
    def test_ALLOW_ANONYMOUS(self):
        self.assertFalse(settings.ALLOW_ANONYMOUS)

        self.assertEqual(None, QuestionForm(self.anon))

        self.assertEqual(None, ResponseForm(self.anon, self.question))

        ############# flip setting ##############
        settings.ALLOW_ANONYMOUS = not settings.ALLOW_ANONYMOUS
        ############# flip setting ##############

        self.assertNotEqual(None, QuestionForm(self.anon))

        self.assertNotEqual(None, ResponseForm(self.anon, self.question))

        form = QuestionForm(self.anon)
        self.assertNotIn('status', form.fields.keys())

        # missing the name/email...
        QUESTION_POST = {
            'title': 'This is a title friend!',
            'body': 'This is the body friend!'
        }

        form = QuestionForm(self.anon, QUESTION_POST)
        self.assertFalse(form.is_valid())

        QUESTION_POST = {
            'name': 'Test Guy',
            'email': '*****@*****.**',
            'title': 'This is a title friend!',
            'body': 'This is the body friend!'
        }

        form = QuestionForm(self.anon, QUESTION_POST)
        self.assertTrue(form.is_valid())

        question = form.save()

        # question has no user and is public by default
        self.assertFalse(question.user)
        self.assertEquals(question.name, 'Test Guy')
        self.assertEquals(question.email, '*****@*****.**')
        self.assertEquals(question.status, 'public')

        ############# flip setting ##############
        settings.ALLOW_ANONYMOUS = not settings.ALLOW_ANONYMOUS
Esempio n. 6
0
    def test_ALLOW_ANONYMOUS(self):
        self.assertFalse(settings.ALLOW_ANONYMOUS)

        self.assertEqual(None, QuestionForm(self.anon))

        self.assertEqual(None, ResponseForm(self.anon, self.question))

        ############# flip setting ##############
        settings.ALLOW_ANONYMOUS = not settings.ALLOW_ANONYMOUS
        ############# flip setting ##############

        self.assertNotEqual(None, QuestionForm(self.anon))

        self.assertNotEqual(None, ResponseForm(self.anon, self.question))

        form = QuestionForm(self.anon)
        self.assertNotIn("status", form.fields.keys())

        # missing the name/email...
        QUESTION_POST = {"title": "This is a title friend!", "body": "This is the body friend!"}

        form = QuestionForm(self.anon, QUESTION_POST)
        self.assertFalse(form.is_valid())

        QUESTION_POST = {
            "name": "Test Guy",
            "email": "*****@*****.**",
            "title": "This is a title friend!",
            "body": "This is the body friend!",
        }

        form = QuestionForm(self.anon, QUESTION_POST)
        self.assertTrue(form.is_valid())

        question = form.save()

        # question has no user and is public by default
        self.assertFalse(question.user)
        self.assertEquals(question.name, "Test Guy")
        self.assertEquals(question.email, "*****@*****.**")
        self.assertEquals(question.status, "public")

        ############# flip setting ##############
        settings.ALLOW_ANONYMOUS = not settings.ALLOW_ANONYMOUS