Commit 29be6f82 by David Ormsbee

Prefetch user groups to speed up auth checks required to render Progress page view for students

parent 05da125a
...@@ -321,7 +321,7 @@ def _has_staff_access_to_location(user, location): ...@@ -321,7 +321,7 @@ def _has_staff_access_to_location(user, location):
return True return True
# If not global staff, is the user in the Auth group for this class? # If not global staff, is the user in the Auth group for this class?
user_groups = [x[1] for x in user.groups.values_list()] user_groups = [g.name for g in user.groups.all()]
staff_group = _course_staff_group_name(location) staff_group = _course_staff_group_name(location)
if staff_group in user_groups: if staff_group in user_groups:
debug("Allow: user in group %s", staff_group) debug("Allow: user in group %s", staff_group)
......
...@@ -327,6 +327,7 @@ def progress(request, course_id, student_id=None): ...@@ -327,6 +327,7 @@ def progress(request, course_id, student_id=None):
# NOTE: To make sure impersonation by instructor works, use # NOTE: To make sure impersonation by instructor works, use
# student instead of request.user in the rest of the function. # student instead of request.user in the rest of the function.
student = User.objects.prefetch_related("groups").get(id=student.id)
student_module_cache = StudentModuleCache.cache_for_descriptor_descendents( student_module_cache = StudentModuleCache.cache_for_descriptor_descendents(
course_id, student, course) course_id, student, course)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment