def get_survey_list(context, only_linked_surveys=False, only_direct_surveys=False): if only_linked_surveys and only_direct_surveys: raise ValueError('arguments "only_linked_surveys" and ' '"only_direct_surveys" cannot both be True') context = copy(context) locale_code = context.get('locale_code') main = context['request'].site.root_page page = SurveysIndexPage.objects.child_of(main).live().first() if page: surveys = [] if only_linked_surveys: surveys = (MoloSurveyPage.objects.child_of(page).filter( languages__language__is_main_language=True).filter( display_survey_directly=False).specific()) elif only_direct_surveys: surveys = (MoloSurveyPage.objects.child_of(page).filter( languages__language__is_main_language=True).filter( display_survey_directly=True).specific()) else: surveys = (MoloSurveyPage.objects.child_of(page).filter( languages__language__is_main_language=True).specific()) else: surveys = MoloSurveyPage.objects.none() context.update({'surveys': get_pages(context, surveys, locale_code)}) return context
def tag_index(request, extra_context=None, template=('core/article_tags_for_paging.html')): tag_name = request.GET.get("tag_name") if not tag_name: raise Http404 main = request.site.root_page tag = Tag.objects.filter(slug=tag_name).descendant_of(main) if tag.exists(): tag = tag.first() context = {'request': request} locale = request.LANGUAGE_CODE articles = [] for article_tag in ArticlePageTags.objects.filter( tag=tag.get_main_language_page()).all(): articles.append(article_tag.page.pk) articles = ArticlePage.objects.filter(pk__in=articles).descendant_of( main).order_by('latest_revision_created_at') # count = articles.count() if articles.count() < count else count # context = self.get_context_data( # object_list=get_pages(context, articles[:count], locale)) object_list = get_pages(context, articles, locale) locale_code = request.GET.get('locale') return render(request, template, { 'object_list': object_list, 'tag': tag, 'locale_code': locale_code }) raise Http404
def tag_index(request, extra_context=None, template=('core/article_tags_for_paging.html')): tag_name = request.GET.get("tag_name") if not tag_name: raise Http404 main = request.site.root_page tag = Tag.objects.filter(slug=tag_name).descendant_of(main) if tag.exists(): tag = tag.first() context = {'request': request} locale = request.LANGUAGE_CODE articles = [] for article_tag in ArticlePageTags.objects.filter( tag=tag.get_main_language_page()).all(): articles.append(article_tag.page.pk) articles = ArticlePage.objects.filter( pk__in=articles).descendant_of(main).order_by( 'latest_revision_created_at') # count = articles.count() if articles.count() < count else count # context = self.get_context_data( # object_list=get_pages(context, articles[:count], locale)) object_list = get_pages(context, articles, locale) locale_code = request.GET.get('locale') return render(request, template, { 'object_list': object_list, 'tag': tag, 'locale_code': locale_code}) raise Http404
def forms_list_linked_to_pages(context, article): locale_code = context.get('locale_code') queryset = article.forms.all()\ .values_list('form', flat=True) forms = MoloFormPage.objects\ .filter(pk__in=queryset) if context.get('forms'): forms = context['forms'] \ + get_pages(context, forms, locale_code) else: forms = get_pages(context, forms, locale_code) context.update({'forms': forms}) return add_form_objects_to_forms(context)
def forms_list_for_pages(context, pk=None, page=None): context = copy(context) locale_code = context.get('locale_code') if page: forms = (MoloFormPage.objects.descendant_of(page).filter( language__is_main_language=True).specific()) else: forms = MoloFormPage.objects.none() context.update({'forms': get_pages(context, forms, locale_code)}) return add_form_objects_to_forms(context)
def surveys_list_for_pages(context, pk=None, page=None): context = copy(context) locale_code = context.get('locale_code') if page: surveys = (MoloSurveyPage.objects.child_of(page).filter( language__is_main_language=True).specific()) else: surveys = MoloSurveyPage.objects.none() context.update({'surveys': get_pages(context, surveys, locale_code)}) return add_form_objects_to_surveys(context)
def gembannerpages(context): request = context['request'] locale = context.get('locale_code') pages = [] if request.site: pages = request.site.root_page.specific.bannerpages().exact_type( GemTextBanner) return { 'bannerpages': get_pages(context, pages, locale), 'request': context['request'], 'locale_code': locale, }
def get_form_kwargs(self): kwargs = super(RegistrationView, self).get_form_kwargs() self.questions = SecurityQuestion.objects.descendant_of( self.request.site.root_page).live().filter( language__is_main_language=True) context = {"request": self.request} self.translated_questions = get_pages( context, self.questions, self.request.LANGUAGE_CODE) kwargs["questions"] = self.translated_questions kwargs["request"] = self.request return kwargs
def get_form_kwargs(self): kwargs = super(RegistrationView, self).get_form_kwargs() self.questions = SecurityQuestion.objects.descendant_of( self.request.site.root_page).live().filter( language__is_main_language=True) context = {"request": self.request} self.translated_questions = get_pages(context, self.questions, self.request.LANGUAGE_CODE) kwargs["questions"] = self.translated_questions kwargs["request"] = self.request return kwargs
def contact_forms_list(context): context = copy(context) locale_code = context.get('locale_code') main = context['request'].site.root_page page = FormsIndexPage.objects.child_of(main).live().first() if page: forms = (MoloFormPage.objects.descendant_of(page).filter( language__is_main_language=True, contact_form=True).specific()) else: forms = MoloFormPage.objects.none() context.update({'forms': get_pages(context, forms, locale_code)}) return context
def get_survey_list_for_site(context): context = copy(context) locale_code = context.get('locale_code') main = context['request'].site.root_page page = SurveysIndexPage.objects.child_of(main).live().first() if page: surveys = (MoloSurveyPage.objects.child_of(page).filter( languages__language__is_main_language=True).specific()) else: surveys = MoloSurveyPage.objects.none() return get_pages(context, surveys, locale_code)
def get_form_list( context, only_linked_forms=False, only_direct_forms=False, only_yourwords=False, personalisable_form=False, contact_form=False, ): if only_linked_forms and only_direct_forms: raise ValueError('arguments "only_linked_forms" and ' '"only_direct_forms" cannot both be True') context = copy(context) locale_code = context.get('locale_code') main = context['request'].site.root_page page = FormsIndexPage.objects.child_of(main).live().first() if page: forms = [] if only_linked_forms: forms = (MoloFormPage.objects.descendant_of(page).filter( language__is_main_language=True, display_form_directly=False, contact_form=False, your_words_competition=False).exact_type( MoloFormPage).specific()) elif only_direct_forms: forms = (MoloFormPage.objects.descendant_of(page).filter( language__is_main_language=True, display_form_directly=True, your_words_competition=False).exact_type( MoloFormPage).specific()) elif only_yourwords: forms = (MoloFormPage.objects.descendant_of(page).filter( language__is_main_language=True, your_words_competition=True).exact_type( MoloFormPage).specific()) elif personalisable_form: forms = (PersonalisableForm.objects.descendant_of(page).filter( language__is_main_language=True).exact_type( PersonalisableForm).specific()) elif contact_form: forms = (MoloFormPage.objects.descendant_of(page).filter( language__is_main_language=True, contact_form=True).exact_type(MoloFormPage).specific()) else: forms = (MoloFormPage.objects.descendant_of(page).filter( language__is_main_language=True).exact_type( MoloFormPage).specific()) else: forms = MoloFormPage.objects.none() context.update({'forms': get_pages(context, forms, locale_code)}) return context
def surveys_list_for_pages(context, pk=None, page=None): context = copy(context) locale_code = context.get('locale_code') if page: surveys = ( MoloSurveyPage.objects.child_of(page).filter( language__is_main_language=True).specific()) else: surveys = MoloSurveyPage.objects.none() context.update({ 'surveys': get_pages(context, surveys, locale_code) }) return add_form_objects_to_surveys(context)
def your_words_competition(context): context = copy(context) locale_code = context.get('locale_code') page = YourWordsCompetitionIndexPage.objects.live().all().first() if page: competitions = ( YourWordsCompetition.objects.child_of(page).filter( languages__language__is_main_language=True).specific()) else: competitions = YourWordsCompetition.objects.none() context.update({ 'competitions': get_pages(context, competitions, locale_code) }) return context
def forms_list(context): context = copy(context) locale_code = context.get('locale_code') main = context['request'].site.root_page page = FormIndexPage.objects.child_of(main).live().first() if page: forms = ( FormPage.objects.child_of(page).filter( language__is_main_language=True).specific()) else: forms = FormPage.objects.none() context.update({ 'forms': get_pages(context, forms, locale_code) }) return context
def load_thank_you_page_for_competition(context, competition): page = competition.get_main_language_page() locale = context.get('locale_code') qs = ThankYou.objects.child_of(page).filter( language__is_main_language=True) if not locale: return qs if qs: return get_pages(context, qs, locale) else: return []
def load_thank_you_page_for_competition(context, competition): page = competition.get_main_language_page() locale = context.get('locale_code') qs = ThankYou.objects.child_of(page).filter( languages__language__is_main_language=True) if not locale: return qs if qs: return get_pages(context, qs, locale) else: return []
def your_words_competition_in_section(context, section): context = copy(context) locale_code = context.get('locale_code') page = section.get_main_language_page() if page: competitions = ( YourWordsCompetition.objects.child_of(page).filter( language__is_main_language=True).specific()) else: competitions = YourWordsCompetition.objects.none() context.update({ 'competitions': get_pages(context, competitions, locale_code), 'section': section }) return context
def your_words_competition(context): context = copy(context) locale_code = context.get('locale_code') main = context['request'].site.root_page page = YourWordsCompetitionIndexPage.objects.child_of(main).live().first() if page: competitions = ( YourWordsCompetition.objects.child_of(page).filter( language__is_main_language=True).specific()) else: competitions = YourWordsCompetition.objects.none() context.update({ 'competitions': get_pages(context, competitions, locale_code) }) return context
def get_survey_list(context, only_linked_surveys=False, only_direct_surveys=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') context = copy(context) locale_code = context.get('locale_code') main = context['request'].site.root_page page = SurveysIndexPage.objects.child_of(main).live().first() if page: surveys = [] if only_linked_surveys: surveys = (MoloSurveyPage.objects.child_of(page) .filter(language__is_main_language=True, display_survey_directly=False, your_words_competition=False) .exact_type(MoloSurveyPage).specific()) elif only_direct_surveys: surveys = (MoloSurveyPage.objects.child_of(page) .filter(language__is_main_language=True, display_survey_directly=True, your_words_competition=False) .exact_type(MoloSurveyPage).specific()) elif only_yourwords: surveys = (MoloSurveyPage.objects.child_of(page) .filter(language__is_main_language=True, your_words_competition=True) .exact_type(MoloSurveyPage).specific()) elif personalisable_survey: surveys = (PersonalisableSurvey.objects.child_of(page) .filter(language__is_main_language=True) .exact_type(PersonalisableSurvey).specific()) else: surveys = (MoloSurveyPage.objects.child_of(page) .filter(language__is_main_language=True) .exact_type(MoloSurveyPage).specific()) else: surveys = MoloSurveyPage.objects.none() context.update({ 'surveys': get_pages(context, surveys, locale_code) }) return context
def get_context_data(self, **kwargs): context = super(ReactionQuestionChoiceFeedbackView, self).get_context_data(**kwargs) locale = self.request.LANGUAGE_CODE choice_slug = self.kwargs.get('choice_slug') context['request'] = self.request main_lang_choice = ReactionQuestionChoice.objects.descendant_of( self.request.site.root_page).filter(slug=choice_slug) choice = get_pages(context, main_lang_choice, locale) if choice: choice = choice[0] else: choice = main_lang_choice context.update({'choice': choice}) article_slug = self.kwargs.get('article_slug') article = ArticlePage.objects.descendant_of( self.request.site.root_page).filter(slug=article_slug).first() context.update({'article': article}) return context
def get_context_data(self, **kwargs): context = super(ReactionQuestionChoiceFeedbackView, self).get_context_data(**kwargs) locale = self.request.LANGUAGE_CODE choice_slug = self.kwargs.get('choice_slug') context['request'] = self.request main_lang_choice = ReactionQuestionChoice.objects.descendant_of( self.request.site.root_page).filter( slug=choice_slug) choice = get_pages(context, main_lang_choice, locale) if choice: choice = choice[0] else: choice = main_lang_choice context.update({'choice': choice}) article_slug = self.kwargs.get('article_slug') article = ArticlePage.objects.descendant_of( self.request.site.root_page).filter(slug=article_slug).first() context.update({'article': article}) return context
def get_form_kwargs(self): # add security questions for form field generation # the security questions should be a random subset of # all the questions the user has answered kwargs = super(ForgotPasswordView, self).get_form_kwargs() profile_settings = UserProfilesSettings.for_site(self.request.site) self.security_questions = SecurityQuestion.objects.descendant_of( self.request.site.root_page).live().filter( language__is_main_language=True) context = {"request": self.request} translated_questions = get_pages(context, self.security_questions, self.request.LANGUAGE_CODE) kwargs["questions"] = translated_questions[:profile_settings. num_security_questions] # limit security questions - done here because query in get_pages() # cannot be performed once queryset is sliced into a list self.security_questions = self.security_questions[:profile_settings. num_security_questions] return kwargs
def get_form_kwargs(self): # add security questions for form field generation # the security questions should be a random subset of # all the questions the user has answered kwargs = super(ForgotPasswordView, self).get_form_kwargs() profile_settings = UserProfilesSettings.for_site(self.request.site) self.security_questions = SecurityQuestion.objects.descendant_of( self.request.site.root_page).live().filter( language__is_main_language=True ) context = {"request": self.request} translated_questions = get_pages( context, self.security_questions, self.request.LANGUAGE_CODE ) kwargs["questions"] = translated_questions[ :profile_settings.num_security_questions] # limit security questions - done here because query in get_pages() # cannot be performed once queryset is sliced into a list self.security_questions = self.security_questions[ :profile_settings.num_security_questions] return kwargs
def get_queryset(self, *args, **kwargs): site_settings = SiteSettings.for_site(self.request.site) main = self.request.site.root_page tag = self.kwargs["tag_name"] if site_settings.enable_tag_navigation: count = self.request.GET.get("count") context = {'request': self.request} locale = self.request.LANGUAGE_CODE tag = Tag.objects.filter(slug=tag).descendant_of(main) if tag.exists(): tag = tag.first() articles = [] for article_tag in ArticlePageTags.objects.filter( tag=tag.get_main_language_page()).all(): articles.append(article_tag.page.pk) articles = ArticlePage.objects.filter( pk__in=articles).descendant_of(main).order_by( '-first_published_at') return get_pages(context, articles[:count], locale) raise Http404 return ArticlePage.objects.descendant_of(main).filter( tags__name__in=[tag]).order_by('-first_published_at')
def get_queryset(self, *args, **kwargs): site_settings = SiteSettings.for_site(self.request.site) main = self.request.site.root_page tag = self.kwargs["tag_name"] if site_settings.enable_tag_navigation: count = self.request.GET.get("count") context = {'request': self.request} locale = self.request.LANGUAGE_CODE tag = Tag.objects.filter(slug=tag).descendant_of(main) if tag.exists(): tag = tag.first() articles = [] for article_tag in ArticlePageTags.objects.filter( tag=tag.get_main_language_page()).all(): articles.append(article_tag.page.pk) articles = ArticlePage.objects.filter( pk__in=articles).descendant_of(main).order_by( '-first_published_at') return get_pages(context, articles[:count], locale) raise Http404 return ArticlePage.objects.descendant_of(main).filter( tags__name__in=[tag]).order_by( '-first_published_at')