add slug and get_absolute_url method for the Note model
authorSeth Woodworth <seth@sethish.com>
Thu, 10 Jan 2013 20:44:43 +0000 (15:44 -0500)
committerSeth Woodworth <seth@sethish.com>
Thu, 10 Jan 2013 20:44:43 +0000 (15:44 -0500)
karmaworld/apps/notes/models.py

index e02a3860865a49ae29cf9f8e0cf983ec83e8b840..3223a8829ab1f0349f48877d8bcbc663a0cb7c18 100644 (file)
@@ -30,6 +30,7 @@ class Note(models.Model):
     tags            = TaggableManager()
 
     name            = models.CharField(max_length=255, blank=True, null=True)
+    slug            = models.SlugField(null=True)
     desc            = models.TextField(max_length=511, blank=True, null=True)
     uploaded_at     = models.DateTimeField(null=True, default=datetime.datetime.utcnow)
 
@@ -57,9 +58,20 @@ class Note(models.Model):
         # TODO: If self.name isn't set, generate one based on uploaded_name
         # if we fail to set the Note.name earlier than this, use the saved filename
 
-        # resume save
+        if not self.slug:
+            self.slug = defaultfilters.slugify(self.name)
         super(Note, self).save(*args, **kwargs)
 
+    @models.permalink
+    def get_absolute_url(self):
+        """ Resolve note url, use 'note' route and slug if slug
+            otherwise use note and id
+        """
+        if self.slug:
+            return ('note_detail', [unicode(self.slug)])
+        else:
+            return ('note_detail', [self.id])
+
 
 # FIXME: replace the following GOOGLE_USER in a settings.py
 GOOGLE_USER = 'seth.woodworth@gmail.com'