Skip to content
This repository has been archived by the owner on Feb 13, 2022. It is now read-only.

Commit

Permalink
Merge c9e2f56 into 8125d06
Browse files Browse the repository at this point in the history
  • Loading branch information
Saeed Marzban committed Feb 12, 2018
2 parents 8125d06 + c9e2f56 commit adc0b60
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 9 deletions.
24 changes: 16 additions & 8 deletions molo/surveys/templatetags/molo_survey_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from copy import copy
from wagtail.wagtailcore.models import Page
from molo.surveys.models import MoloSurveyPage, SurveysIndexPage
from molo.surveys.models import (
MoloSurveyPage, SurveysIndexPage, PersonalisableSurvey)

from molo.core.templatetags.core_tags import get_pages
from django.shortcuts import get_object_or_404
Expand All @@ -14,7 +15,8 @@
def get_survey_list(context,
only_linked_surveys=False,
only_direct_surveys=False,
only_yourwords=False):
only_yourwords=False,
personalisable_survey=False):
if only_linked_surveys and only_direct_surveys:
raise ValueError('arguments "only_linked_surveys" and '
'"only_direct_surveys" cannot both be True')
Expand All @@ -30,22 +32,26 @@ def get_survey_list(context,
.filter(languages__language__is_main_language=True,
display_survey_directly=False,
your_words_competition=False)
.specific())
.exact_type(MoloSurveyPage).specific())
elif only_direct_surveys:
surveys = (MoloSurveyPage.objects.child_of(page)
.filter(languages__language__is_main_language=True,
display_survey_directly=True,
your_words_competition=False)
.specific())
.exact_type(MoloSurveyPage).specific())
elif only_yourwords:
surveys = (MoloSurveyPage.objects.child_of(page)
.filter(languages__language__is_main_language=True,
your_words_competition=True)
.specific())
.exact_type(MoloSurveyPage).specific())
elif personalisable_survey:
surveys = (PersonalisableSurvey.objects.child_of(page)
.filter(languages__language__is_main_language=True)
.exact_type(PersonalisableSurvey).specific())
else:
surveys = (MoloSurveyPage.objects.child_of(page)
.filter(languages__language__is_main_language=True)
.specific())
.exact_type(MoloSurveyPage).specific())
else:
surveys = MoloSurveyPage.objects.none()
context.update({
Expand Down Expand Up @@ -82,11 +88,13 @@ def surveys_list_headline(context):

@register.inclusion_tag('surveys/surveys_list.html', takes_context=True)
def surveys_list(context, pk=None, only_linked_surveys=False,
only_direct_surveys=False, only_yourwords=False):
only_direct_surveys=False, only_yourwords=False,
personalisable_survey=False):
context = get_survey_list(context,
only_linked_surveys=only_linked_surveys,
only_direct_surveys=only_direct_surveys,
only_yourwords=only_yourwords)
only_yourwords=only_yourwords,
personalisable_survey=personalisable_survey)
return add_form_objects_to_surveys(context)


Expand Down
60 changes: 59 additions & 1 deletion molo/surveys/tests/test_templatetags.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from molo.core.models import Main, Languages, SiteLanguageRelation
from molo.core.tests.base import MoloTestCaseMixin
from molo.surveys.models import (MoloSurveyPage, MoloSurveyFormField,
SurveysIndexPage)
SurveysIndexPage, PersonalisableSurvey)

from molo.surveys.templatetags.molo_survey_tags import get_survey_list

Expand Down Expand Up @@ -45,6 +45,31 @@ def create_molo_survey_page(self,
)
return molo_survey_page, molo_survey_form_field

def create_personalisable_survey(
self,
parent,
title="Test Survey",
slug="test-survey",
**kwargs):
personalisable_survey = PersonalisableSurvey(
title=title,
slug=slug,
intro='Introduction to Test Survey ...',
thank_you_text='Thank you for taking the Test Survey',
**kwargs
)

parent.add_child(instance=personalisable_survey)
personalisable_survey.save_revision().publish()
survey_form_field = MoloSurveyFormField.objects.create(
page=personalisable_survey,
sort_order=1,
label='Your favourite animal',
field_type='singleline',
required=True
)
return personalisable_survey, survey_form_field

def setUp(self):
self.mk_main()
self.main = Main.objects.all().first()
Expand Down Expand Up @@ -106,6 +131,18 @@ def setUp(self):
slug='french-translation-of-linked-survey-title')
self.translated_linked_survey.save_revision().publish()

self.personalisable_survey, personalisable_survey_form_field = (
self.create_personalisable_survey(
parent=self.surveys_index,
title="personalisable survey title",
slug="personalisable_survey_title",
))
self.client.post(reverse(
'add_translation', args=[self.personalisable_survey.id, 'fr']))
self.trans_personalisable_survey = PersonalisableSurvey.objects.get(
slug='french-translation-of-personalisable-survey-title')
self.trans_personalisable_survey.save_revision().publish()

def test_get_survey_list_default(self):
context = Context({
'locale_code': 'en',
Expand Down Expand Up @@ -183,3 +220,24 @@ def test_get_survey_list_arg_error(self):
context = get_survey_list(context,
only_linked_surveys=True,
only_direct_surveys=True,)

def test_get_survey_list_personalisable_survey(self):
context = Context({
'locale_code': 'en',
'request': self.request,
})
context = get_survey_list(context, personalisable_survey=True)
self.assertEqual(len(context['surveys']), 1)
self.assertTrue(
self.direct_molo_survey_page not in context['surveys'])
self.assertTrue(self.personalisable_survey in context['surveys'])
context = Context({
'locale_code': 'fr',
'request': self.request,
})
context = get_survey_list(context, personalisable_survey=True)
self.assertEqual(len(context['surveys']), 1)
self.assertTrue(
self.translated_direct_survey not in context['surveys'])
self.assertTrue(
self.trans_personalisable_survey in context['surveys'])

0 comments on commit adc0b60

Please sign in to comment.