merged in session cache separation

This commit is contained in:
David Ormsbee
2012-03-15 15:30:41 -04:00
4 changed files with 28 additions and 6 deletions

View File

@@ -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)]

View File

@@ -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"))

View File

@@ -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

16
util/cache.py Normal file
View File

@@ -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