--- a/qrurls/views.py Mon Sep 02 02:21:42 2013 +0300
+++ b/qrurls/views.py Mon Sep 02 02:31:55 2013 +0300
@@ -31,18 +31,33 @@
))
def shorturl (request, shorturl=None, shorturl_id=None) :
- url_feed = _get_url_feed(shorturl=shorturl, shorturl_id=shorturl_id)
-
- # most recent
- url_item = url_feed.active_item()
+ """
+ Primary frontend for redirecting based on current time.
+ """
- if not url_item :
+ # JOIN against shorturl
+ url_item = URLItem.objects.select_related()
+
+ if shorturl:
+ shorturl = shorturl.strip(' /')
+ url_item = url_item.filter(shorturl__shorturl=shorturl)
+ elif shorturl_id:
+ shorturl_id = int(shorturl_id.strip(' /'))
+ url_item = url_item.filter(shorturl__id=shorturl_id)
+ else:
+ raise Http404()
+
+ # match for most recent item
+ now = timezone.now()
+ url_item = url_item.filter(published__lt=now).order_by('-published')
+
+ try:
+ url_item = url_item[0]
+ except IndexError:
raise Http404()
# redirect, either directly, or to image()
- url = url_item.get_absolute_url()
-
- return HttpResponseRedirect(url)
+ return HttpResponseRedirect(url_item.get_absolute_url())
def item (request, shorturl, item_id) :
url_feed = _get_url_feed(shorturl=shorturl)