shorter urls
authorTero Marttila <terom@paivola.fi>
Mon, 15 Jul 2013 23:46:45 +0200
changeset 19 0742539e94c3
parent 18 dd08de6f1fe3
child 20 2d45215de95a
shorter urls
cmpuqrct/urls.py
qrurls/models.py
qrurls/views.py
--- a/cmpuqrct/urls.py	Tue Jul 16 00:31:57 2013 +0300
+++ b/cmpuqrct/urls.py	Mon Jul 15 23:46:45 2013 +0200
@@ -8,6 +8,7 @@
 urlpatterns = patterns('',
     url(r'^$', qrurls.views.index, name='shorturls'),
     url(r'^urls/(?P<shorturl>\w+)', qrurls.views.shorturl, name='shorturl'),
+    url(r'(?i)^u/(?P<shorturl_id>\d+)', qrurls.views.shorturl, name='minurl'),
 
     # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
     url(r'^admin/', include(admin.site.urls)),
--- a/qrurls/models.py	Tue Jul 16 00:31:57 2013 +0300
+++ b/qrurls/models.py	Mon Jul 15 23:46:45 2013 +0200
@@ -22,12 +22,15 @@
     def qrcode_url (self) :
         return 'http://{domain}{url}'.format(
                 domain = get_current_site(None).domain,
-                url = self.get_absolute_url(),
+                url = self.get_short_url(),
         ).upper()
 
     def get_absolute_url (self) :
         return reverse('shorturl', args=[self.shorturl])
 
+    def get_short_url (self) :
+        return reverse('minurl', args=[self.id])
+
     def active_item(self, now=None) :
         """Currently published URLItem."""
         if now is None :
--- a/qrurls/views.py	Tue Jul 16 00:31:57 2013 +0300
+++ b/qrurls/views.py	Mon Jul 15 23:46:45 2013 +0200
@@ -9,11 +9,20 @@
         urls    = urls,
     ))
 
-def shorturl (request, shorturl) :
-    shorturl = shorturl.strip(' /')
-    try :
-        url = URL.objects.get(shorturl=shorturl)
-    except URL.DoesNotExist :
+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()
 
     # most recent