Skip to content

Commit 1c6d7b2

Browse files
committed
feat: filter courses by user language by default
Adds a feature flag to filter courses by users preferred language by default test: add test (cherry picked from commit eca9398c098ee54a25cdb7f9612cff144c98f652)
1 parent c5bd3f3 commit 1c6d7b2

File tree

5 files changed

+38
-4
lines changed

5 files changed

+38
-4
lines changed

lms/djangoapps/courseware/views/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ def courses(request):
276276
"""
277277
courses_list = []
278278
course_discovery_meanings = getattr(settings, 'COURSE_DISCOVERY_MEANINGS', {})
279+
set_default_filter = settings.FEATURES.get('ENABLE_COURSE_DISCOVERY_DEFAULT_LANGUAGE_FILTER')
279280
if not settings.FEATURES.get('ENABLE_COURSE_DISCOVERY'):
280281
courses_list = get_courses(request.user)
281282

@@ -293,6 +294,7 @@ def courses(request):
293294
{
294295
'courses': courses_list,
295296
'course_discovery_meanings': course_discovery_meanings,
297+
'set_default_filter': set_default_filter,
296298
'programs_list': programs_list,
297299
}
298300
)

lms/envs/common.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,17 @@
659659
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7845
660660
'ENABLE_COURSE_DISCOVERY': False,
661661

662+
# .. toggle_name: FEATURES['ENABLE_COURSE_DISCOVERY_DEFAULT_LANGUAGE_FILTER']
663+
# .. toggle_implementation: DjangoSetting
664+
# .. toggle_default: False
665+
# .. toggle_description: Enable courses to be filtered by user language by default.
666+
# .. toggle_use_cases: open_edx
667+
# .. toggle_creation_date: 2023-11-02
668+
# .. toggle_target_removal_date: None
669+
# .. toggle_warning: The ENABLE_COURSE_DISCOVERY setting should be enabled.
670+
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/33647
671+
'ENABLE_COURSE_DISCOVERY_DEFAULT_LANGUAGE_FILTER': False,
672+
662673
# .. toggle_name: FEATURES['ENABLE_COURSE_FILENAME_CCX_SUFFIX']
663674
# .. toggle_implementation: DjangoSetting
664675
# .. toggle_default: False

lms/static/js/discovery/discovery_factory.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
'js/discovery/views/search_form', 'js/discovery/views/courses_listing',
66
'js/discovery/views/filter_bar', 'js/discovery/views/refine_sidebar'],
77
function(Backbone, SearchState, Filters, SearchForm, CoursesListing, FilterBar, RefineSidebar) {
8-
return function(meanings, searchQuery, userLanguage, userTimezone) {
8+
return function(meanings, searchQuery, userLanguage, userTimezone, setDefaultFilter) {
99
var dispatcher = _.extend({}, Backbone.Events);
1010
var search = new SearchState();
1111
var filters = new Filters();
@@ -21,10 +21,16 @@
2121
userLanguage: userLanguage,
2222
userTimezone: userTimezone
2323
};
24+
if (setDefaultFilter && userLanguage) {
25+
filters.add({
26+
type: 'language',
27+
query: userLanguage,
28+
name: refineSidebar.termName('language', userLanguage)
29+
});
30+
}
2431
listing = new CoursesListing({model: courseListingModel});
2532

2633
dispatcher.listenTo(form, 'search', function(query) {
27-
filters.reset();
2834
form.showLoadingIndicator();
2935
search.performSearch(query, filters.getTerms());
3036
});
@@ -42,6 +48,7 @@
4248
dispatcher.listenTo(filterBar, 'clearFilter', removeFilter);
4349

4450
dispatcher.listenTo(filterBar, 'clearAll', function() {
51+
filters.reset();
4552
form.doSearch('');
4653
});
4754

lms/static/js/spec/discovery/discovery_factory_spec.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ define([
4747
start: '1970-01-01T05:00:00+00:00',
4848
image_url: '/c4x/edX/DemoX/asset/images_course_image.jpg',
4949
org: 'edX',
50-
id: 'edX/DemoX/Demo_Course'
50+
id: 'edX/DemoX/Demo_Course',
51+
language: 'en'
5152
}
5253
}
5354
],
@@ -197,5 +198,17 @@ define([
197198
$('.search-facets li [data-value="edX1"]').trigger('click');
198199
expect($('.active-filter [data-value="edX1"]').length).toBe(0);
199200
});
201+
202+
it('filters by default language', function() {
203+
DiscoveryFactory(MEANINGS, '', 'en', 'Asia/Kolkata', true);
204+
var requests = AjaxHelpers.requests(this);
205+
$('.discovery-submit').trigger('click');
206+
AjaxHelpers.respondWithJson(requests, JSON_RESPONSE);
207+
expect($('.courses-listing article').length).toEqual(1);
208+
expect($('.courses-listing .course-title')).toContainHtml('edX Demonstration Course');
209+
expect($('.active-filter').length).toBe(1);
210+
expect($('.active-filter .query')).toContainHtml("English");
211+
});
212+
200213
});
201214
});

lms/templates/courseware/courses.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
${course_discovery_meanings | n, dump_js_escaped_json},
2424
getParameterByName('search_query'),
2525
"${user_language | n, js_escaped_string}",
26-
"${user_timezone | n, js_escaped_string}"
26+
"${user_timezone | n, js_escaped_string}",
27+
${set_default_filter | n, dump_js_escaped_json}
2728
);
2829
</%static:require_module>
2930
</%block>

0 commit comments

Comments
 (0)