From f5630e19b3b7a27d502e4c921bd076fb812abb98 Mon Sep 17 00:00:00 2001 From: Arslan Ashraf Date: Fri, 24 Jan 2025 14:38:04 +0500 Subject: [PATCH] filtering the passed language on the backend --- cms/api.py | 7 ++++++- cms/models.py | 12 +++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cms/api.py b/cms/api.py index 3b32fedca..fabaaeca7 100644 --- a/cms/api.py +++ b/cms/api.py @@ -9,7 +9,11 @@ from wagtail.models import Page, Site from cms import models as cms_models -from cms.constants import CERTIFICATE_INDEX_SLUG, ENTERPRISE_PAGE_SLUG, CatalogSorting +from cms.constants import ( + CERTIFICATE_INDEX_SLUG, + ENTERPRISE_PAGE_SLUG, + CatalogSorting, +) log = logging.getLogger(__name__) DEFAULT_HOMEPAGE_PROPS = dict(title="Home Page", subhead="This is the home page") # noqa: C408 @@ -47,6 +51,7 @@ def filter_and_sort_catalog_pages( external_course_pages (iterable of ExternalCoursePage): ExternalCoursePages to filter and sort external_program_pages (iterable of ExternalProgramPage): ExternalProgramPages to filter and sort sort_by (str): Sorting applicable. + language_filter (str): Language filter applicable. Returns: tuple of (list of Pages): A tuple containing a list of combined ProgramPages, CoursePages, ExternalCoursePages and ExternalProgramPages, a list of diff --git a/cms/models.py b/cms/models.py index 7c12b07ed..a2a1a756a 100644 --- a/cms/models.py +++ b/cms/models.py @@ -520,6 +520,7 @@ def get_context(self, request, *args, **kwargs): # noqa: ARG002 Populate the context with live programs, courses and programs + courses """ topic_filter = request.GET.get("topic", ALL_TOPICS) + language_filter = request.GET.get("language", ALL_LANGUAGES) is_language_filter_enabled = is_enabled(CATALOG_LANGUAGE_FILTER, default=False) @@ -562,10 +563,19 @@ def get_context(self, request, *args, **kwargs): # noqa: ARG002 .order_by("title") ) + if language_filter != ALL_LANGUAGES: + program_page_qset = program_page_qset.filter(language__name=language_filter) + external_program_qset = external_program_qset.filter( + language__name=language_filter + ) + course_page_qset = course_page_qset.filter(language__name=language_filter) + external_course_qset = external_course_qset.filter( + language__name=language_filter + ) + if topic_filter != ALL_TOPICS: program_page_qset = program_page_qset.related_pages(topic_filter) external_program_qset = external_program_qset.related_pages(topic_filter) - course_page_qset = course_page_qset.related_pages(topic_filter) external_course_qset = external_course_qset.related_pages(topic_filter)