diff --git a/courseware/content_parser.py b/courseware/content_parser.py index cc02597cb3..eb1678536d 100644 --- a/courseware/content_parser.py +++ b/courseware/content_parser.py @@ -11,10 +11,11 @@ from lxml import etree try: # This lets us do __name__ == ='__main__' from django.conf import settings - from django.core.cache import cache + from student.models import UserProfile from student.models import UserTestGroup from mitxmako.shortcuts import render_to_response, render_to_string + from util.cache import cache except: settings = None @@ -157,10 +158,7 @@ def user_groups(user): cache_expiration = 60 * 60 # one hour # Kill caching on dev machines -- we switch groups a lot - if "dev" not in settings.DEFAULT_GROUPS: - group_names = cache.get(fasthash(key)) - else: - group_names = None + group_names = cache.get(fasthash(key)) if group_names is None: group_names = [u.name for u in UserTestGroup.objects.filter(users=user)] diff --git a/settings.py b/settings.py index cce3dfad4e..561fc550af 100644 --- a/settings.py +++ b/settings.py @@ -163,6 +163,13 @@ MAKO_TEMPLATES = {} LOGGING_ENV = "dev" # override this in different environments +# Default dev cache (i.e. no caching) +CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', + } +} + # Make sure we execute correctly regardless of where we're called from execfile(os.path.join(BASE_DIR, "settings.py")) diff --git a/simplewiki/models.py b/simplewiki/models.py index 58173e0ca0..33c9b0403e 100644 --- a/simplewiki/models.py +++ b/simplewiki/models.py @@ -3,7 +3,6 @@ import os from django import forms from django.contrib.auth.models import User -from django.core.cache import cache from django.core.urlresolvers import reverse from django.db import models from django.db.models import signals @@ -11,6 +10,8 @@ from django.utils.translation import ugettext_lazy as _ from markdown import markdown from settings import * +from util.cache import cache + class ShouldHaveExactlyOneRootSlug(Exception): pass diff --git a/util/cache.py b/util/cache.py new file mode 100644 index 0000000000..b0c370a035 --- /dev/null +++ b/util/cache.py @@ -0,0 +1,16 @@ +""" +This module aims to give a little more fine-tuned control of caching and cache +invalidation. Import these instead of django.core.cache. + +Note that 'default' is being preserved for user session caching, which we're +not migrating so as not to inconvenience users by logging them all out. +""" +from django.core import cache + +# If we can't find a 'general' CACHE defined in settings.py, we simply fall back +# to returning the default cache. This will happen with dev machines. +try: + cache = cache.get_cache('general') +except ValueError: + cache = cache.cache +