--- 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)
+
+