# HG changeset patch # User Tero Marttila # Date 1378558625 -10800 # Node ID 35bdf2acbbaa5a5004de3a3bb29ae17940ef0851 # Parent 6442e5c97b48e436b2296fb1ec7f4748c8488dd0 invalidate URL cache on URLItem save diff -r 6442e5c97b48 -r 35bdf2acbbaa qrurls/models.py --- a/qrurls/models.py Sat Sep 07 15:48:23 2013 +0300 +++ b/qrurls/models.py Sat Sep 07 15:57:05 2013 +0300 @@ -5,6 +5,7 @@ import django.core.files.storage import django.utils.http +from django import dispatch from django.contrib.sites.models import get_current_site from django.core.cache import cache from django.core.urlresolvers import reverse @@ -59,6 +60,10 @@ verbose_name = u"URL Feed" verbose_name_plural = u"URL Feeds" + @classmethod + def cache_key (self, shorturl) : + return 'qrurls/url/{shorturl}'.format(shorturl=shorturl) + def qrcode_img (self, size=512) : return QRCODE_API.format( width=size, height=size, @@ -228,8 +233,7 @@ Returns url:str, modified:datetime Raises URLItem.NotFound """ - - key = 'qrurls/url/{shorturl}'.format(shorturl=shorturl) + key = URL.cache_key(shorturl) get = cache.get(key) if get : @@ -298,3 +302,11 @@ url=self.get_absolute_url(), ) +@dispatch.receiver(models.signals.post_save, sender=URLItem) +def urlitem_save(instance, **kwargs) : + # invalidate cache + key = URL.cache_key(instance.shorturl.shorturl) + log.info("clear cache: %s: %s", instance, key) + cache.delete(key) + +