Commit 1ebc3b31 by Christina Roberts

Merge pull request #1566 from MITx/fix/cdodge/optimize-metadata-tree-computation

Fix/cdodge/optimize metadata tree computation
parents 9429262c 8a7211da
...@@ -75,12 +75,15 @@ def get_course_for_item(location): ...@@ -75,12 +75,15 @@ def get_course_for_item(location):
return courses[0] return courses[0]
def get_lms_link_for_item(location, preview=False): def get_lms_link_for_item(location, preview=False, course_id=None):
if course_id is None:
course_id = get_course_id(location)
if settings.LMS_BASE is not None: if settings.LMS_BASE is not None:
lms_link = "//{preview}{lms_base}/courses/{course_id}/jump_to/{location}".format( lms_link = "//{preview}{lms_base}/courses/{course_id}/jump_to/{location}".format(
preview='preview.' if preview else '', preview='preview.' if preview else '',
lms_base=settings.LMS_BASE, lms_base=settings.LMS_BASE,
course_id=get_course_id(location), course_id= course_id,
location=Location(location) location=Location(location)
) )
else: else:
......
...@@ -114,7 +114,7 @@ def index(request): ...@@ -114,7 +114,7 @@ def index(request):
""" """
List all courses available to the logged in user List all courses available to the logged in user
""" """
courses = modulestore().get_items(['i4x', None, None, 'course', None]) courses = modulestore('direct').get_items(['i4x', None, None, 'course', None])
# filter out courses that we don't have access too # filter out courses that we don't have access too
def course_filter(course): def course_filter(course):
...@@ -132,7 +132,7 @@ def index(request): ...@@ -132,7 +132,7 @@ def index(request):
course.location.org, course.location.org,
course.location.course, course.location.course,
course.location.name]), course.location.name]),
get_lms_link_for_item(course.location)) get_lms_link_for_item(course.location, course_id=course.location.course_id))
for course in courses], for course in courses],
'user': request.user, 'user': request.user,
'disable_course_creation': settings.MITX_FEATURES.get('DISABLE_COURSE_CREATION', False) and not request.user.is_staff 'disable_course_creation': settings.MITX_FEATURES.get('DISABLE_COURSE_CREATION', False) and not request.user.is_staff
......
...@@ -157,10 +157,15 @@ class MongoModuleStore(ModuleStoreBase): ...@@ -157,10 +157,15 @@ class MongoModuleStore(ModuleStoreBase):
''' '''
# get all collections in the course, this query should not return any leaf nodes # get all collections in the course, this query should not return any leaf nodes
query = { '_id.org' : location.org, query = {
'_id.course' : location.course, '_id.org': location.org,
'_id.revision' : None, '_id.course': location.course,
'definition.children':{'$ne': []} '$or': [
{"_id.category":"course"},
{"_id.category":"chapter"},
{"_id.category":"sequential"},
{"_id.category":"vertical"}
]
} }
# we just want the Location, children, and metadata # we just want the Location, children, and metadata
record_filter = {'_id':1,'definition.children':1,'metadata':1} record_filter = {'_id':1,'definition.children':1,'metadata':1}
...@@ -279,6 +284,13 @@ class MongoModuleStore(ModuleStoreBase): ...@@ -279,6 +284,13 @@ class MongoModuleStore(ModuleStoreBase):
resource_fs = OSFS(root) resource_fs = OSFS(root)
metadata_inheritance_tree = None
# if we are loading a course object, there is no parent to inherit the metadata from
# so don't bother getting it
if item['location']['category'] != 'course':
metadata_inheritance_tree = self.get_cached_metadata_inheritance_tree(Location(item['location']), 300)
# TODO (cdodge): When the 'split module store' work has been completed, we should remove # TODO (cdodge): When the 'split module store' work has been completed, we should remove
# the 'metadata_inheritance_tree' parameter # the 'metadata_inheritance_tree' parameter
system = CachingDescriptorSystem( system = CachingDescriptorSystem(
...@@ -288,7 +300,7 @@ class MongoModuleStore(ModuleStoreBase): ...@@ -288,7 +300,7 @@ class MongoModuleStore(ModuleStoreBase):
resource_fs, resource_fs,
self.error_tracker, self.error_tracker,
self.render_template, self.render_template,
metadata_inheritance_tree = self.get_cached_metadata_inheritance_tree(Location(item['location']), 60) metadata_inheritance_tree = metadata_inheritance_tree
) )
return system.load_item(item['location']) return system.load_item(item['location'])
......
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