From ab0b791010847ed2b1ee3be40b9cfe6e4ca0c270 Mon Sep 17 00:00:00 2001 From: Bridger Maxwell Date: Fri, 24 Feb 2012 17:14:23 -0500 Subject: [PATCH] Added caching for processed course.xml --HG-- branch : dormsbee_performance --- courseware/content_parser.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/courseware/content_parser.py b/courseware/content_parser.py index 07ad98a64b..679894609d 100644 --- a/courseware/content_parser.py +++ b/courseware/content_parser.py @@ -170,15 +170,24 @@ def course_xml_process(tree): def course_file(user): ''' Given a user, return course.xml ''' - # TODO: Cache. + + # TODO: Cache. filename = user.profile_cache.courseware # UserProfile.objects.get(user=user).courseware - groups = user_groups(user) - options = {'dev_content':settings.DEV_CONTENT, 'groups' : groups} - tree = course_xml_process(etree.XML(render_to_string(filename, options, namespace = 'course'))) + + cache_key = filename + "_processed?dev_content:" + str(options['dev_content']) + "&groups:" + str(sorted(groups)) + tree_string = cache.get(cache_key) + if not tree_string: + tree = course_xml_process(etree.XML(render_to_string(filename, options, namespace = 'course'))) + tree_string = etree.tostring(tree) + + cache.set(cache_key, tree_string, 60) + else: + tree = etree.XML(tree_string) + return tree def section_file(user, section):