django-dbtemplates/dbtemplates/utils/cache.py

41 lines
1.1 KiB
Python
Raw Normal View History

2011-07-01 13:41:24 +00:00
from django.core.cache import get_cache
from django.contrib.sites.models import Site
from dbtemplates.conf import settings
def get_cache_backend():
2011-07-08 12:46:41 +00:00
return get_cache(settings.DBTEMPLATES_CACHE_BACKEND)
2011-07-01 13:41:24 +00:00
cache = get_cache_backend()
def get_cache_key(name):
current_site = Site.objects.get_current()
return 'dbtemplates::%s::%s' % (name, current_site.pk)
2011-07-01 13:50:04 +00:00
def set_and_return(cache_key, content, display_name):
2011-07-01 13:41:24 +00:00
# Save in cache backend explicitly if manually deleted or invalidated
if cache:
cache.set(cache_key, content)
return (content, display_name)
2011-07-01 13:50:04 +00:00
2011-07-01 13:41:24 +00:00
def add_template_to_cache(instance, **kwargs):
"""
Called via Django's signals to cache the templates, if the template
in the database was added or changed.
"""
remove_cached_template(instance)
cache.set(get_cache_key(instance.name), instance.content)
def remove_cached_template(instance, **kwargs):
"""
Called via Django's signals to remove cached templates, if the template
in the database was changed or deleted.
"""
cache.delete(get_cache_key(instance.name))