diff --git a/network-api/networkapi/wagtailpages/pagemodels/products.py b/network-api/networkapi/wagtailpages/pagemodels/products.py
index 22b1f752660..e45e274d87e 100644
--- a/network-api/networkapi/wagtailpages/pagemodels/products.py
+++ b/network-api/networkapi/wagtailpages/pagemodels/products.py
@@ -43,32 +43,43 @@
('Needs Improvement', 'Needs Improvement'),
('Bad', 'Bad')
]
-
-DEFAULT_LOCALE_ID = Locale.objects.get(language_code=settings.LANGUAGE_CODE).id
+DEFAULT_LANGUAGE_CODE = settings.LANGUAGE_CODE
+DEFAULT_LOCALE = Locale.objects.get(language_code=DEFAULT_LANGUAGE_CODE)
+DEFAULT_LOCALE_ID = DEFAULT_LOCALE.id
def get_language_code_from_request(request):
"""
Accepts a request. Returns a language code (string) if there is one. Falls back to English.
"""
- default_language_code = settings.LANGUAGE_CODE
+ language_code = DEFAULT_LANGUAGE_CODE
if hasattr(request, 'LANGUAGE_CODE'):
- default_language_code = request.LANGUAGE_CODE
- return default_language_code
+ language_code = request.LANGUAGE_CODE
+ return language_code
+
def get_categories_for_locale(language_code):
"""
- Make sure that we check both the "whatever the current locale" category
- for whether or not it's hidden, but also the original English version.
+ Start with the English list of categories, and replace any of them
+ with their localized counterpart, where possible, so that we don't
+ end up with an incomplete category list due to missing locale records.
"""
+ default_locale_list = BuyersGuideProductCategory.objects.filter(
+ hidden=False,
+ locale=DEFAULT_LOCALE,
+ )
+
+ if language_code == DEFAULT_LANGUAGE_CODE:
+ return default_locale_list
+
+ actual_locale = Locale.objects.get(language_code=language_code)
return [
- cat
- for cat in BuyersGuideProductCategory.objects.filter(
- hidden=False,
- locale=Locale.objects.get(language_code=language_code)
- )
- if not cat.original.hidden
- ]
+ BuyersGuideProductCategory.objects.filter(
+ translation_key=cat.translation_key,
+ locale=actual_locale,
+ ).first() or cat for cat in default_locale_list
+ ]
+
def get_product_subset(cutoff_date, authenticated, key, products, language_code='en'):
"""
diff --git a/network-api/networkapi/wagtailpages/templates/buyersguide/bg_base.html b/network-api/networkapi/wagtailpages/templates/buyersguide/bg_base.html
index 0db9399eea9..312c6376a0a 100644
--- a/network-api/networkapi/wagtailpages/templates/buyersguide/bg_base.html
+++ b/network-api/networkapi/wagtailpages/templates/buyersguide/bg_base.html
@@ -94,7 +94,7 @@
{% with original=cat.original %}
{% if original.published_product_page_count > 0 %}
{% localizedroutablepageurl home_page 'category-view' lang_code original.slug as cat_url %}
- {{ cat.name }}
+ {{ cat.name }}
{% endif %}
{% endwith %}
{% endfor %}
diff --git a/network-api/networkapi/wagtailpages/templates/buyersguide/fragments/category_nav_links.html b/network-api/networkapi/wagtailpages/templates/buyersguide/fragments/category_nav_links.html
index a431d72735f..031dcb34d87 100644
--- a/network-api/networkapi/wagtailpages/templates/buyersguide/fragments/category_nav_links.html
+++ b/network-api/networkapi/wagtailpages/templates/buyersguide/fragments/category_nav_links.html
@@ -11,7 +11,7 @@
+ data-name="{{ original.name }}">
{{ cat.name }}
{% endif %}
diff --git a/network-api/networkapi/wagtailpages/templatetags/bg_nav_tags.py b/network-api/networkapi/wagtailpages/templatetags/bg_nav_tags.py
index 6d24d417a03..d32bd9d4480 100644
--- a/network-api/networkapi/wagtailpages/templatetags/bg_nav_tags.py
+++ b/network-api/networkapi/wagtailpages/templatetags/bg_nav_tags.py
@@ -9,8 +9,8 @@
def check_active_category(current_category, target_category):
# because we're working with potentially localized data,
# make sure to compare the linguistic originals.
- current_category = getattr(current_category, 'alias_of', current_category)
- target_category = getattr(target_category, 'alias_of', target_category)
+ current_category = getattr(current_category, 'original', current_category)
+ target_category = getattr(target_category, 'original', target_category)
return 'active' if current_category == target_category else ''