1.1 --- a/agdj/blog/models.py Tue Dec 02 09:19:46 2008 -0500
1.2 +++ b/agdj/blog/models.py Sun Feb 01 01:35:02 2009 -0500
1.3 @@ -4,7 +4,7 @@
1.4 from tagging.fields import TagField
1.5
1.6 from agdj.blog.managers import PublicManager
1.7 -from agdj.utils import cached_property
1.8 +from agdj.utils import cached_property, dictproperty
1.9
1.10
1.11 class Entry(models.Model):
1.12 @@ -17,6 +17,17 @@
1.13 pub_date = models.DateTimeField(auto_now_add=True)
1.14 slug = models.CharField(max_length=64, unique=True)
1.15 public = models.BooleanField()
1.16 + SLUG_ONLY = "slug-only"
1.17 + DATE_BASED = "date-based"
1.18 + URL_SCHEME_CHOICES = (
1.19 + (SLUG_ONLY, "Slug Only"),
1.20 + (DATE_BASED, "Date-based"),
1.21 + )
1.22 + feed_url_scheme = models.CharField(
1.23 + max_length=64, choices=URL_SCHEME_CHOICES,
1.24 + help_text="Does this post use the new date-based URL or the old "
1.25 + "slug-based one in feed URLs and GUIDs?",
1.26 + default=DATE_BASED)
1.27
1.28 # This is a hack that even I don't understand
1.29 text_tags = TagField(db_column="tags")
1.30 @@ -45,6 +56,23 @@
1.31
1.32 return super(Entry, self).save(*args, **kwargs)
1.33
1.34 + @dictproperty
1.35 + def urls(self, name):
1.36 + from django.core.urlresolvers import reverse
1.37 +
1.38 + if name == "feed_url":
1.39 + if self.feed_url_scheme == self.DATE_BASED:
1.40 + return self.urls.view
1.41 + else:
1.42 + return reverse("redirect-to-date-url", args=[self.slug])
1.43 + elif name == "view":
1.44 + return reverse("view-blog-post",
1.45 + args=[self.pub_date.year,
1.46 + self.pub_date.strftime("%b").lower(),
1.47 + self.pub_date.day,
1.48 + self.slug])
1.49 +
1.50 +
1.51
1.52 @cached_property
1.53 def rendered(self):