qrurls/views.py
changeset 80 3aaac91a6654
parent 79 b125b3fcd52d
child 81 3a2fdc820c41
--- 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()