Skip to content

Commit

Permalink
Merge pull request #8392 from cfpb/trans-portal-cat
Browse files Browse the repository at this point in the history
Make translations work for Portal Search Pages
  • Loading branch information
wpears committed May 14, 2024
2 parents 626498b + b2a15d9 commit 76df1a9
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 0 deletions.
24 changes: 24 additions & 0 deletions cfgov/ask_cfpb/models/pages.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import re
from collections import OrderedDict

from django.conf import settings
from django.core.paginator import InvalidPage, Paginator
from django.db import models
from django.http import Http404
Expand Down Expand Up @@ -331,6 +332,29 @@ def portal_category_page(self, request, **kwargs):
)
return self.get_results(request)

def get_translation_links(self, request, inclusive=True, live=True):
if self.portal_category:
language_names = dict(settings.LANGUAGES)

return [
{
"href": translation.get_url(request=request)
+ {
v.heading: k
for k, v in translation.specific.category_map.items()
}[self.portal_category.heading]
+ "/",
"language": translation.language,
"text": language_names[translation.language],
}
for translation in super().get_translations(
inclusive=inclusive, live=live
)
]
return super().get_translation_links(
request, inclusive=inclusive, live=live
)


class AnswerResultsPage(CFGOVPage):
answers = []
Expand Down
41 changes: 41 additions & 0 deletions cfgov/ask_cfpb/tests/models/test_pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from django.core.paginator import Paginator
from django.http import HttpRequest
from django.test import SimpleTestCase, TestCase, override_settings
from django.test.client import RequestFactory
from django.urls import reverse
from django.utils import timezone, translation

Expand Down Expand Up @@ -469,6 +470,46 @@ def test_portal_category_page_key_terms_spanish(self):
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Amortización")

def make_page(self, **kwargs):
language = kwargs.pop("language", "en")
page = PortalSearchPage(
title="test",
slug=language,
language=language,
**kwargs,
)
self.ROOT_PAGE.add_child(instance=page)
return page

def test_portal_page_translations(self):
category = PortalCategory(
heading="Key terms", heading_es="Palabras claves"
)
category.save()
page_en = self.make_page(language="en")
page_es = self.make_page(language="es", english_page=page_en)

page_en.portal_category = category
page_es.portal_category = category

request = RequestFactory().get("/")

self.assertEqual(
page_en.get_translation_links(request),
[
{
"href": "/en/key-terms/",
"language": "en",
"text": "English",
},
{
"href": "/es/palabras-claves/",
"language": "es",
"text": "Spanish",
},
],
)


class AnswerPageTest(TestCase):
fixtures = ["ask_tests", "portal_topics"]
Expand Down

0 comments on commit 76df1a9

Please sign in to comment.