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)