Mercurial > public > sg101
view gpp/news/models.py @ 19:aa2b41c5212b
First steps at scratching out a home page. Will need to develop some template tags now to fill it out.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sun, 19 Apr 2009 20:10:00 +0000 |
parents | dbd703f7d63a |
children | e66e718e1e1e |
line wrap: on
line source
""" Models for the news application. """ import datetime from django.db import models from django.contrib import auth from tagging.fields import TagField class Category(models.Model): """News stories belong to categories""" title = models.CharField(max_length = 64) icon = models.ImageField(upload_to='news/categories/', blank=True) def __unicode__(self): return self.title def num_stories(self): return News.objects.filter(category = self.pk).count() class Meta: verbose_name_plural = 'Categories' ordering = ('title', ) class PendingStory(models.Model): """Stories submitted by users are held pending admin approval""" title = models.CharField(max_length=255) submitter = models.ForeignKey(auth.models.User) category = models.ForeignKey(Category) short_text = models.TextField() long_text = models.TextField(blank=True) date_submitted = models.DateTimeField(auto_now_add=True, db_index=True) allow_comments = models.BooleanField(default=True) approved = models.BooleanField(default=False) tags = TagField() def save(self, force_insert = False, force_update = False): if self.approved: Story.objects.create(title=self.title, submitter=self.submitter, category=self.category, short_text=self.short_text, long_text=self.long_text, allow_comments=self.allow_comments, date_published=datetime.datetime.now(), tags=self.tags) self.delete() else: super(PendingStory, self).save(force_insert, force_update) def __unicode__(self): return self.title class Meta: ordering = ('-date_submitted', ) verbose_name_plural = 'Pending Stories' class Story(models.Model): """Model for news stories""" title = models.CharField(max_length=255) submitter = models.ForeignKey(auth.models.User) category = models.ForeignKey(Category) short_text = models.TextField() long_text = models.TextField(blank=True) allow_comments = models.BooleanField(default=True) date_published = models.DateTimeField(db_index=True) tags = TagField() @models.permalink def get_absolute_url(self): return ('news.views.story', [str(self.id)]) def __unicode__(self): return self.title class Meta: ordering = ('-date_published', ) verbose_name_plural = 'Stories' def can_comment_on(self): now = datetime.datetime.now() delta = now - self.date_published return delta.days < 30