def create_answer_id(request, page): """ Create an incremented Answer ID for a new AnswerPage and attach it. Also create a sister-language page to keep languages in sync. """ def create_sister_page(new_page, answer_base): sister_map = { 'es': { 'language': 'en', 'parent': Page.objects.get(slug='ask-cfpb').specific, 'title_prefix': 'English draft of', }, 'en': { 'language': 'es', 'parent': Page.objects.get(slug='obtener-respuestas').specific, 'title_prefix': 'Spanish draft of', } } sister_values = sister_map[new_page.language] sister_page = AnswerPage( live=False, language=sister_values['language'], title="{} {}-{}-{}".format( sister_values['title_prefix'], new_page.title, sister_values['language'], answer_base.pk), answer_base=answer_base, ) sister_values['parent'].add_child(instance=sister_page) return sister_page if isinstance(page, AnswerPage) and page.answer_base is None: new_answer_base = Answer( last_user=request.user, question=page.title) new_answer_base.save() new_id = new_answer_base.pk page.answer_base = new_answer_base page.language = page.get_parent().language sister_page = create_sister_page(page, new_answer_base) sister_page.save() sister_page.save_revision(user=request.user) page.title = "{}-{}-{}".format( page.title, page.language, new_id) page.slug = "{}-{}-{}".format( page.slug, page.language, new_id) page.save() page.save_revision(user=request.user)
def tag_search(self, request, **kwargs): from ask_cfpb.models import Answer tag_dict = Answer.valid_tags(language=self.language) tag = kwargs.get('tag').replace('_', ' ') if not tag or tag not in tag_dict['valid_tags']: raise Http404 if self.language == 'es': self.answers = [ (SPANISH_ANSWER_SLUG_BASE.format(a.id), a.question_es, Truncator(a.answer_es).words(40, truncate=' ...')) for a in tag_dict['tag_map'][tag] if a.answer_pages.filter(language='es', live=True) ] else: self.answers = [ (ENGLISH_ANSWER_SLUG_BASE.format(a.id), a.question, Truncator(a.answer).words(40, truncate=' ...')) for a in tag_dict['tag_map'][tag] if a.answer_pages.filter(language='en', live=True) ] paginator = Paginator(self.answers, 20) page_number = validate_page_number(request, paginator) page = paginator.page(page_number) context = self.get_context(request) context['current_page'] = page_number context['results'] = page context['results_count'] = len(self.answers) context['tag'] = tag context['paginator'] = paginator return TemplateResponse( request, self.get_template(request), context)
def tag_search(self, request, **kwargs): from ask_cfpb.models import Answer tag_dict = Answer.valid_tags(language=self.language) tag = kwargs.get('tag').replace('_', ' ') if not tag or tag not in tag_dict['valid_tags']: raise Http404 if self.language == 'es': self.answers = [ (SPANISH_ANSWER_SLUG_BASE.format(a.id), a.question_es, Truncator(a.answer_es).words(40, truncate=' ...')) for a in tag_dict['tag_map'][tag] ] else: self.answers = [ (ENGLISH_ANSWER_SLUG_BASE.format(a.id), a.question, Truncator(a.answer).words(40, truncate=' ...')) for a in tag_dict['tag_map'][tag] ] paginator = Paginator(self.answers, 20) page_number = validate_page_number(request, paginator) page = paginator.page(page_number) context = self.get_context(request) context['current_page'] = page_number context['results'] = page context['results_count'] = len(self.answers) context['tag'] = tag context['paginator'] = paginator return TemplateResponse( request, self.get_template(request), context)