from django.db import models from django.contrib.auth.models import User from saudade.common.help import markdown from datetime import datetime # Create your models here. class Tag(models.Model): name = models.CharField(max_length=20) desc = models.TextField('Description', help_text=markdown) title = models.CharField('Title text', max_length=50, help_text="title text for tag link") slug = models.SlugField(prepopulate_from=('title',), help_text="slug for tag in url") class Admin: list_display = ('title', 'slug') search_fields = ('title', 'desc') list_filter = ('title',) class Meta: ordering = ['name'] def __unicode__(self): return "%s (%s)" % (self.name, self.title) def get_link(self): return "%s" % (self.get_absolute_url(), self.title.replace('"', '\\"') , self.name) def get_absolute_url(self): return "/blog/tags/%s/" % (self.slug) def get_admin_url(self): return "/admin/blog/tag/%d/" % (self.id) class TagGroup(models.Model): name = models.CharField(max_length=20) desc = models.TextField('Description', help_text=markdown) title = models.CharField('Title text', max_length=50, help_text="title tag for tag group") slug = models.SlugField(prepopulate_from=('title',), help_text="slug for tag group") tags = models.ManyToManyField(Tag) def __unicode__(self): return "%s (%s)" % (self.name, self.title) def get_link(self): return "%s" % (self.get_absolute_url(), self.title, self.name) def get_absolute_url(self): return "/blog/categories/%s/" % (self.slug) class Post(models.Model): title = models.CharField(max_length=250) body = models.TextField(help_text=markdown) tags = models.ManyToManyField(Tag) summary = models.TextField(help_text=markdown, blank=True) author = models.ForeignKey(User) slug = models.SlugField(prepopulate_from=('title',), help_text="prepopulated from the title") pub_date = models.DateTimeField('Date published', default=datetime.now()) # FIXME: this is a huge mistake; rename this field 'published' is_published = models.BooleanField('Publish this post?', default=True) enable_comments = models.BooleanField(default=True) class Admin: fields = ( ('Blog post', {'fields': ('title', 'slug', 'body')}), ('Publishing data', {'fields': ('author', 'is_published', 'enable_comments', 'pub_date', 'tags')}), ) list_display = ('title', 'pub_date', 'is_published') search_fields = ('title', 'slug', 'body', 'summary') list_filter = ('pub_date', 'is_published', 'enable_comments') class Meta: ordering = ['-pub_date'] get_latest_by = '-pub_date' def save(self): from saudade.common.util import summarize self.summary = summarize(self.body, striptags=False) super(Post, self).save() def __unicode__(self): return u"%s" % (self.title) def get_absolute_url(self): return "/blog/%s/%s/%s/%s" % (self.pub_date.year, self.pub_date.strftime('%b'), self.pub_date.day, self.slug) def get_admin_url(self): return "/admin/blog/post/%d" % (self.id)