Skip to content
Snippets Groups Projects
Commit 39f48a8c authored by Ahsan Ulhaq's avatar Ahsan Ulhaq
Browse files

Reduce query to user table

LEARNER-6336
parent 14a8ea7b
No related merge requests found
......@@ -16,7 +16,7 @@ from openedx.features.enterprise_support.utils import get_enterprise_learner_gen
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
%>
......
......@@ -113,17 +113,16 @@ class CompletionUtilsTestCase(SharedModuleStoreTestCase, CompletionWaffleTestMix
)
@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,
......
......@@ -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()
......
......@@ -27,7 +27,7 @@ class CookieTests(SharedModuleStoreTestCase):
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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment