Skip to content

Commit

Permalink
Merge pull request openedx#700 from proversity-org/proversity/fix-fil…
Browse files Browse the repository at this point in the history
…ter-courses-by-user-lang

fix filter courses by user lang
  • Loading branch information
Nico van Niekerk authored Apr 5, 2018
2 parents e0c6746 + 7e42358 commit 878627e
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 9 deletions.
42 changes: 42 additions & 0 deletions common/djangoapps/student/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,48 @@ def test_email_settings_unfulfilled_entitlement(self, mock_email_feature, mock_c
response = self.client.get(self.path)
self.assertEqual(pq(response.content)(self.EMAIL_SETTINGS_ELEMENT_ID).length, 0)

@ddt.data(
(
{"ENABLE_FILTER_COURSES_BY_USER_LANG": True},
[
{
"org": "DC",
"number": "001",
"run": "2013",
"name": "Man of Steel",
"language": "en"
},
{
"org": "DC",
"number": "002",
"run": "2016",
"name": "Dawn of Justice",
"language": "ar"
},
],
"Dawn of Justice"
)
)
@ddt.unpack
@override_settings(LANGUAGE_CODE='en')
def test_load_student_dashboard_filter_courses_by_user_lang(self, config, courses_detail, expected_result):
with patch.dict('django.conf.settings.FEATURES', config):
for course_detail in courses_detail:
course = CourseFactory(
org=course_detail["org"],
number=course_detail["number"],
run=course_detail["run"],
name=course_detail["name"]
)

CourseEnrollmentFactory(course_id=course.id, user=self.user)
course_overview = CourseOverview.get_from_id(course.id)
course_overview.language = course_detail["language"]
course_overview.save()

response = self.client.get(self.path)
self.assertNotIn(response.content, expected_result)


@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
@override_settings(BRANCH_IO_KEY='test_key')
Expand Down
16 changes: 11 additions & 5 deletions common/djangoapps/student/views/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
get_visible_sessions_for_entitlement
)
from openedx.core.djangoapps.credit.email_utils import get_credit_provider_display_names, make_providers_strings
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from openedx.core.djangoapps.programs.models import ProgramsApiConfig
from openedx.core.djangoapps.programs.utils import ProgramDataExtender, ProgramProgressMeter
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
Expand Down Expand Up @@ -729,12 +730,17 @@ def student_dashboard(request):
)


if configuration_helpers.get_value("ENABLE_FILTER_COURSES_BY_USER_LANG",
settings.FEATURES.get('ENABLE_FILTER_COURSES_BY_USER_LANG')):
user_prefered_lang = request.LANGUAGE_CODE
if configuration_helpers.get_value(
"ENABLE_FILTER_COURSES_BY_USER_LANG",
settings.FEATURES.get("ENABLE_FILTER_COURSES_BY_USER_LANG")
):
preferred_lang = request.LANGUAGE_CODE
for enrollment in course_enrollments[:]:
course_language = modulestore().get_course(enrollment.course_id).language
if course_language != user_prefered_lang:
course = modulestore().get_course(enrollment.course_id)
course_overview = CourseOverview.get_from_id(course.id)
course_language = course_overview.language

if course_language != preferred_lang:
course_enrollments.remove(enrollment)


Expand Down
8 changes: 8 additions & 0 deletions common/djangoapps/student/views/management.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,14 @@ def index(request, extra_context=None, user=AnonymousUser()):
else:
courses = sort_by_announcement(courses)

if configuration_helpers.get_value(
"ENABLE_FILTER_COURSES_BY_USER_LANG",
settings.FEATURES.get("ENABLE_FILTER_COURSES_BY_USER_LANG")
):
preferred_lang = request.LANGUAGE_CODE
courses =\
[course for course in courses if course.language == preferred_lang]

context = {'courses': courses}

context['homepage_overlay_html'] = configuration_helpers.get_value('homepage_overlay_html')
Expand Down
13 changes: 9 additions & 4 deletions lms/djangoapps/courseware/views/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,10 +246,15 @@ def courses(request):
# Add marketable programs to the context.
programs_list = get_programs_with_type(request.site, include_hidden=False)

if configuration_helpers.get_value("ENABLE_FILTER_COURSES_BY_USER_LANG",
settings.FEATURES.get('ENABLE_FILTER_COURSES_BY_USER_LANG')):
user_prefered_lang = get_user_preferences(request.user)['pref-lang']
courses_list = filter(lambda x: x.language == user_prefered_lang, courses_list)
if configuration_helpers.get_value(
"ENABLE_FILTER_COURSES_BY_USER_LANG",
settings.FEATURES.get("ENABLE_FILTER_COURSES_BY_USER_LANG")
):
preferred_lang = request.LANGUAGE_CODE
courses_list = [
course for course in courses_list
if course.language == preferred_lang
]

return render_to_response(
"courseware/courses.html",
Expand Down

0 comments on commit 878627e

Please sign in to comment.