--- a/qrurls/models.py Thu Aug 15 00:17:01 2013 +0300
+++ b/qrurls/models.py Thu Aug 15 00:35:55 2013 +0300
@@ -129,7 +129,7 @@
def save (self, *args, **kwargs) :
if self.image :
- self.url = self.image.get_absolute_url()
+ self.url = reverse('shorturl_image', kwargs=dict(shorturl=self.shorturl, item_id=self.id))
super(URLItem, self).save(*args, **kwargs)
--- a/qrurls/static/qrurls/qrurls.css Thu Aug 15 00:17:01 2013 +0300
+++ b/qrurls/static/qrurls/qrurls.css Thu Aug 15 00:35:55 2013 +0300
@@ -15,3 +15,20 @@
p.qrurls-sadface {
font-size: 2em;
}
+
+/* Images */
+body.qrurls-image {
+ background-color: black;
+
+ padding: 0;
+ margin: 0;
+}
+
+body.qrurls-image .container {
+ width: 100%;
+ height: 100%;
+}
+
+body.qrurls-image img {
+ border: none;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/qrurls/templates/qrurls/image.html Thu Aug 15 00:35:55 2013 +0300
@@ -0,0 +1,12 @@
+{% load staticfiles %}
+<html>
+ <head>
+ <title>{{ image }}</title>
+ <link rel="stylesheet" type="text/css" href="{% static 'qrurls/qrurls.css' %}" />
+ </head>
+ <body class="qrurls-image">
+ <div class="container">
+ <img src="{{ image.get_absolute_url }}" alt="{{ image }}" width="{{ image.image.width }}" height="{{ image.image.height }}" />
+ </div>
+ </body>
+</html>
--- a/qrurls/urls.py Thu Aug 15 00:17:01 2013 +0300
+++ b/qrurls/urls.py Thu Aug 15 00:35:55 2013 +0300
@@ -5,4 +5,6 @@
url(r'^$', qrurls.views.index, name='shorturls'),
url(r'^(?P<shorturl_id>\d+)$', qrurls.views.shorturl, name='miniurl'),
url(r'^(?P<shorturl>\w+)$', qrurls.views.shorturl, name='shorturl'),
+
+ url(r'^(?P<shorturl>\w+)/(?P<item_id>\d+)$', qrurls.views.image, name='shorturl_image'),
)
--- a/qrurls/views.py Thu Aug 15 00:17:01 2013 +0300
+++ b/qrurls/views.py Thu Aug 15 00:35:55 2013 +0300
@@ -3,6 +3,22 @@
from qrurls.models import URL, URLItem
+def _get_url_feed (shorturl=None, shorturl_id=None) :
+ if shorturl :
+ shorturl = shorturl.strip(' /')
+ try :
+ return URL.objects.get(shorturl=shorturl)
+ except URL.DoesNotExist :
+ raise Http404()
+ elif shorturl_id :
+ shorturl_id = int(shorturl_id.strip(' /'))
+ try :
+ return URL.objects.get(id=shorturl_id)
+ except URL.DoesNotExist :
+ raise Http404()
+ else :
+ raise Http404()
+
def index (request) :
urls = URL.objects.all()
return render(request, 'qrurls/index.html', dict(
@@ -10,26 +26,26 @@
))
def shorturl (request, shorturl=None, shorturl_id=None) :
- if shorturl :
- shorturl = shorturl.strip(' /')
- try :
- url = URL.objects.get(shorturl=shorturl)
- except URL.DoesNotExist :
- raise Http404()
- elif shorturl_id :
- shorturl_id = int(shorturl_id.strip(' /'))
- try :
- url = URL.objects.get(id=shorturl_id)
- except URL.DoesNotExist :
- raise Http404()
- else :
- raise Http404()
+ url_feed = _get_url_feed(shorturl=shorturl, shorturl_id=shorturl_id)
# most recent
url_item = url.active_item()
if not url_item :
raise Http404()
+
+ # redirect
+ url = url_item.get_absolute_url()
+
+ return HttpResponseRedirect(url)
- return HttpResponseRedirect(url_item.get_absolute_url())
-
+def image (request, shorturl, item_id) :
+ url_feed = _get_url_feed(shorturl=shorturl)
+ url_item = URLItem.objects.get(shorturl=url_feed, id=int(item_id))
+
+ if not url_item.image :
+ raise Http404()
+
+ return render(request, 'qrurls/image.html', dict(
+ image = url_item.image,
+ ))