Skip to content

Commit

Permalink
Merge pull request openedx#18926 from edx/ahsan/LEARNER-6336
Browse files Browse the repository at this point in the history
Reduce query to user table
  • Loading branch information
Ahsan Ul Haq authored Sep 26, 2018
2 parents 14a8ea7 + 39f48a8 commit 0167ef4
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 13 deletions.
2 changes: 1 addition & 1 deletion lms/templates/header/user_dropdown.html
Original file line number Diff line number Diff line change
Expand Up @@ -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
%>

Expand Down
7 changes: 3 additions & 4 deletions openedx/core/djangoapps/user_api/accounts/tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
10 changes: 3 additions & 7 deletions openedx/core/djangoapps/user_api/accounts/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion openedx/core/djangoapps/user_authn/tests/test_cookies.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 0167ef4

Please sign in to comment.