move get_url to URL
authorTero Marttila <terom@fixme.fi>
Sat, 07 Sep 2013 16:17:42 +0300
changeset 87 88d9c9974d6a
parent 86 656c8ff72f77
child 88 06ef4789a353
move get_url to URL
qrurls/models.py
qrurls/views.py
--- a/qrurls/models.py	Sat Sep 07 16:15:34 2013 +0300
+++ b/qrurls/models.py	Sat Sep 07 16:17:42 2013 +0300
@@ -64,6 +64,33 @@
     def cache_key (self, shorturl) :
         return 'qrurls/url/{shorturl}'.format(shorturl=shorturl)
 
+    @classmethod
+    def get_url (cls, shorturl) :
+        """
+            Return the current URL for a given shorturl, from cache or DB.
+            
+            Returns url:str, modified:datetime
+            Raises URLItem.DoesNotExist
+        """
+        key = cls.cache_key(shorturl)
+        get = cache.get(key)
+        
+        if get :
+            log.debug("get cache: %s", key)
+            return get
+        else:
+            # from db
+            url_item = URLItem.get(shorturl=shorturl)
+            set = (
+                url_item.get_absolute_url(),
+                url_item.last_modified()
+            )
+            
+            log.debug("set cache: %s", key)
+            cache.set(key, set)
+            return set
+
+
     def qrcode_img (self, size=512) :
         return QRCODE_API.format(
                 width=size, height=size,
@@ -189,16 +216,12 @@
         ordering = ['published']
 
     @classmethod
-    def cache_key (cls, shorturl, item_id) :
-        return 'qrurls/url/{shorturl}/{item}'.format(shorturl=shorturl, item=item_id)
-
-    @classmethod
     def get (cls, shorturl, item_id=None, related=()) :
         """
             Return the URLItem for a given shorturl, either the given specific one,
-            or the latest, from the database.
+            or the latest, from the database in one SQL query.
 
-            Raises URLItem.NotFound
+            Raises URLItem.DoesNotExist
         """
         # JOIN against shorturl, urlimage
         url_item = cls.objects.select_related(*related)
@@ -229,30 +252,8 @@
                 raise cls.DoesNotExist()
 
     @classmethod
-    def get_url (cls, shorturl) :
-        """
-            Return the current URL for a given shorturl, from cache or DB.
-            
-            Returns url:str, modified:datetime
-            Raises URLItem.NotFound
-        """
-        key = URL.cache_key(shorturl)
-        get = cache.get(key)
-        
-        if get :
-            log.debug("get cache: %s", key)
-            return get
-        else:
-            # from db
-            url_item = cls.get(shorturl=shorturl)
-            set = (
-                url_item.get_absolute_url(),
-                url_item.last_modified()
-            )
-            
-            log.debug("set cache: %s", key)
-            cache.set(key, set)
-            return set
+    def cache_key (cls, shorturl, item_id) :
+        return 'qrurls/url/{shorturl}/{item}'.format(shorturl=shorturl, item=item_id)
 
     @classmethod
     def get_item (cls, shorturl, item_id) :
@@ -260,7 +261,7 @@
             Return a data dict for the given URLItem, from cache or DB.
 
             Returns { url: str, title: str, image: str, last_modified: datetime }
-            Raises URLItem.NotFound
+            Raises URLItem.DoesNotExist
         """
 
         key = cls.cache_key(shorturl, item_id)
--- a/qrurls/views.py	Sat Sep 07 16:15:34 2013 +0300
+++ b/qrurls/views.py	Sat Sep 07 16:17:42 2013 +0300
@@ -28,7 +28,7 @@
     """
 
     try:
-        url, modified = URLItem.get_url(shorturl)
+        url, modified = URL.get_url(shorturl)
     except URLItem.DoesNotExist:
         raise Http404()