From 39f48a8c1038afffba5ef93076630edf03a61e8d Mon Sep 17 00:00:00 2001 From: Ahsan Ulhaq Date: Thu, 13 Sep 2018 16:07:11 +0500 Subject: [PATCH] Reduce query to user table LEARNER-6336 --- lms/templates/header/user_dropdown.html | 2 +- .../djangoapps/user_api/accounts/tests/test_utils.py | 7 +++---- openedx/core/djangoapps/user_api/accounts/utils.py | 10 +++------- .../core/djangoapps/user_authn/tests/test_cookies.py | 2 +- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/lms/templates/header/user_dropdown.html b/lms/templates/header/user_dropdown.html index 675ccc320c8..5fabdb49b04 100644 --- a/lms/templates/header/user_dropdown.html +++ b/lms/templates/header/user_dropdown.html @@ -16,7 +16,7 @@ self.real_user = getattr(user, 'real_user', user) profile_image_url = get_profile_image_urls_for_user(self.real_user)['medium'] username = self.real_user.username -resume_block = retrieve_last_sitewide_block_completed(username) +resume_block = retrieve_last_sitewide_block_completed(self.real_user) displayname = get_enterprise_learner_generic_name(request) or username %> diff --git a/openedx/core/djangoapps/user_api/accounts/tests/test_utils.py b/openedx/core/djangoapps/user_api/accounts/tests/test_utils.py index c901c865c5e..a938c8bf464 100644 --- a/openedx/core/djangoapps/user_api/accounts/tests/test_utils.py +++ b/openedx/core/djangoapps/user_api/accounts/tests/test_utils.py @@ -113,17 +113,16 @@ def submit_faux_completions(self): ) @override_settings(LMS_ROOT_URL='test_url:9999') - @ddt.data(True, False) - def test_retrieve_last_sitewide_block_completed(self, use_username): + def test_retrieve_last_sitewide_block_completed(self): """ Test that the method returns a URL for the "last completed" block when sending a user object """ block_url = retrieve_last_sitewide_block_completed( - self.engaged_user.username if use_username else self.engaged_user + self.engaged_user ) empty_block_url = retrieve_last_sitewide_block_completed( - self.cruft_user.username if use_username else self.cruft_user + self.cruft_user ) self.assertEqual( block_url, diff --git a/openedx/core/djangoapps/user_api/accounts/utils.py b/openedx/core/djangoapps/user_api/accounts/utils.py index 2967863861e..d2b5cdd6028 100644 --- a/openedx/core/djangoapps/user_api/accounts/utils.py +++ b/openedx/core/djangoapps/user_api/accounts/utils.py @@ -102,24 +102,20 @@ def _is_valid_social_username(value): return '/' not in value -def retrieve_last_sitewide_block_completed(username): +def retrieve_last_sitewide_block_completed(user): """ Completion utility From a string 'username' or object User retrieve the last course block marked as 'completed' and construct a URL - :param username: str(username) or obj(User) + :param user: obj(User) :return: block_lms_url """ if not completion_waffle.waffle().is_enabled(completion_waffle.ENABLE_COMPLETION_TRACKING): return - if not isinstance(username, User): - userobj = User.objects.get(username=username) - else: - userobj = username - latest_completions_by_course = BlockCompletion.latest_blocks_completed_all_courses(userobj) + latest_completions_by_course = BlockCompletion.latest_blocks_completed_all_courses(user) known_site_configs = [ other_site_config.get_value('course_org_filter') for other_site_config in SiteConfiguration.objects.all() diff --git a/openedx/core/djangoapps/user_authn/tests/test_cookies.py b/openedx/core/djangoapps/user_authn/tests/test_cookies.py index ed3be5b38b1..483562fa589 100644 --- a/openedx/core/djangoapps/user_authn/tests/test_cookies.py +++ b/openedx/core/djangoapps/user_authn/tests/test_cookies.py @@ -27,7 +27,7 @@ def setUp(self): def _get_expected_header_urls(self, request): expected_header_urls = { 'logout': reverse('logout'), - 'resume_block': retrieve_last_sitewide_block_completed(self.user.username) + 'resume_block': retrieve_last_sitewide_block_completed(self.user) } # Studio (CMS) does not have the URLs below