Switch to side-by-side view

--- a/ForgeBlog/forgeblog/model/blog.py
+++ b/ForgeBlog/forgeblog/model/blog.py
@@ -1,4 +1,5 @@
 import difflib
+import hashlib
 from datetime import datetime
 from random import randint
 
@@ -137,14 +138,18 @@
         domain = '.'.join(reversed(self.app.url[1:-1].split('/'))).replace('_', '-')
         return '%s@%s%s' % (self.title.replace('/', '.'), domain, config.common_suffix)
 
-    def make_slug(self):
+    @staticmethod
+    def make_base_slug(title, timestamp):
         slugsafe = ''.join(
             ch.lower()
-            for ch in self.title.replace(' ', '-')
+            for ch in title.replace(' ', '-')
             if ch.isalnum() or ch == '-')
-        base = '%s/%s' % (
-            self.timestamp.strftime('%Y/%m'),
-            slugsafe)
+        return '%s/%s' % (
+                timestamp.strftime('%Y/%m'),
+                slugsafe)
+
+    def make_slug(self):
+        base = BlogPost.make_base_slug(self.title, self.timestamp)
         self.slug = base
         while True:
             try:
@@ -152,7 +157,6 @@
                 return self.slug
             except DuplicateKeyError:
                 self.slug = base + '-%.3d' % randint(0,999)
-                return self.slug
 
     def url(self):
         return self.app.url + self.slug + '/'