--- a/qrurls/views.py Fri Sep 06 01:36:33 2013 +0300
+++ b/qrurls/views.py Sat Sep 07 15:35:56 2013 +0300
@@ -1,3 +1,6 @@
+import calendar # timegm
+import logging
+
from django.core.cache import cache
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import render
@@ -5,7 +8,7 @@
from qrurls.models import URL, URLItem
-import calendar # timegm
+log = logging.getLogger('qrurls.views')
"""
Public frontend UI.
@@ -20,34 +23,6 @@
def http_datetime (dt) :
return http.http_date(calendar.timegm(dt.utctimetuple()))
-def _get_url_item (shorturl=None, shorturl_id=None, item_id=None, related=()) :
- # JOIN against shorturl, urlimage
- url_item = URLItem.objects.select_related(*related)
-
- if shorturl:
- url_item = url_item.filter(shorturl__shorturl=shorturl)
- elif shorturl_id:
- shorturl_id = int(shorturl_id)
- url_item = url_item.filter(shorturl__id=shorturl_id)
- else:
- raise URLNotFound()
-
- # match for published items
- now = timezone.now()
- url_item = url_item.filter(published__lt=now).order_by('-published')
-
- if item_id :
- try :
- return url_item.get(id=int(item_id))
- except URLItem.DoesNotExist:
- raise URLItemNotFound()
- else :
- # most recent
- try:
- return url_item[0]
- except IndexError:
- raise URLItemNotFound()
-
def index (request) :
urls = URL.objects.all()
return render(request, 'qrurls/index.html', dict(
@@ -64,12 +39,14 @@
if data :
url, modified = data
+ log.info("get cache: %s: %s", key, url)
else:
- url_item = _get_url_item(shorturl=shorturl, shorturl_id=shorturl_id)
+ url_item = URLItem.search(shorturl=shorturl, shorturl_id=shorturl_id)
modified = url_item.last_modified()
url = url_item.get_absolute_url()
-
+
+ log.info("set cache: %s: %s", key, url)
cache.set(key, (url, modified)) # XXX: expiry
# redirect, either directly, or to image()