use seprate frontend view for url_images in url_items
authorTero Marttila <terom@fixme.fi>
Thu, 15 Aug 2013 00:35:55 +0300
changeset 33 b714115da724
parent 32 82eae853e240
child 34 4ebfe940acd1
use seprate frontend view for url_images in url_items
qrurls/models.py
qrurls/static/qrurls/qrurls.css
qrurls/templates/qrurls/image.html
qrurls/urls.py
qrurls/views.py
--- 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,
+    ))