From 42ea4f3271661cef95df928b78f06d0e5ed8beda Mon Sep 17 00:00:00 2001 From: kimth Date: Wed, 15 Aug 2012 10:13:35 -0400 Subject: [PATCH] Rename acquire_lock to select_for_update, add docstring --- lms/djangoapps/courseware/models.py | 10 ++++++---- lms/djangoapps/courseware/module_render.py | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lms/djangoapps/courseware/models.py b/lms/djangoapps/courseware/models.py index 5fae05c177..261140dec7 100644 --- a/lms/djangoapps/courseware/models.py +++ b/lms/djangoapps/courseware/models.py @@ -67,7 +67,7 @@ class StudentModuleCache(object): """ A cache of StudentModules for a specific student """ - def __init__(self, user, descriptors, acquire_lock=False): + def __init__(self, user, descriptors, select_for_update=False): ''' Find any StudentModule objects that are needed by any descriptor in descriptors. Avoids making multiple queries to the database. @@ -77,6 +77,7 @@ class StudentModuleCache(object): Arguments user: The user for which to fetch maching StudentModules descriptors: An array of XModuleDescriptors. + select_for_update: Flag indicating whether the row should be locked until end of transaction ''' if user.is_authenticated(): module_ids = self._get_module_state_keys(descriptors) @@ -86,7 +87,7 @@ class StudentModuleCache(object): self.cache = [] chunk_size = 500 for id_chunk in [module_ids[i:i + chunk_size] for i in xrange(0, len(module_ids), chunk_size)]: - if acquire_lock: + if select_for_update: self.cache.extend(StudentModule.objects.select_for_update().filter( student=user, module_state_key__in=id_chunk) @@ -102,13 +103,14 @@ class StudentModuleCache(object): @classmethod - def cache_for_descriptor_descendents(cls, user, descriptor, depth=None, descriptor_filter=lambda descriptor: True, acquire_lock=False): + def cache_for_descriptor_descendents(cls, user, descriptor, depth=None, descriptor_filter=lambda descriptor: True, select_for_update=False): """ descriptor: An XModuleDescriptor depth is the number of levels of descendent modules to load StudentModules for, in addition to the supplied descriptor. If depth is None, load all descendent StudentModules descriptor_filter is a function that accepts a descriptor and return wether the StudentModule should be cached + select_for_update: Flag indicating whether the row should be locked until end of transaction """ def get_child_descriptors(descriptor, depth, descriptor_filter): @@ -128,7 +130,7 @@ class StudentModuleCache(object): descriptors = get_child_descriptors(descriptor, depth, descriptor_filter) - return StudentModuleCache(user, descriptors, acquire_lock) + return StudentModuleCache(user, descriptors, select_for_update) def _get_module_state_keys(self, descriptors): ''' diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index 000d1ca830..66db426434 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -302,7 +302,7 @@ def xqueue_callback(request, course_id, userid, id, dispatch): user = User.objects.get(id=userid) student_module_cache = StudentModuleCache.cache_for_descriptor_descendents( - user, modulestore().get_item(id), depth=0, acquire_lock=True) + user, modulestore().get_item(id), depth=0, select_for_update=True) instance = get_module(user, request, id, student_module_cache) instance_module = get_instance_module(user, instance, student_module_cache)