Mercurial > public > sg101
diff gpp/news/models.py @ 54:e249b5f9d180
#3, #4: clear caches when saving profile, bulletins, and news. Broke up the stuff on the home page for finer control of caching.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 23 Jun 2009 00:11:00 +0000 |
parents | e66e718e1e1e |
children | 5c889b587416 |
line wrap: on
line diff
--- a/gpp/news/models.py Sun Jun 21 22:41:58 2009 +0000 +++ b/gpp/news/models.py Tue Jun 23 00:11:00 2009 +0000 @@ -5,83 +5,89 @@ import datetime from django.db import models from django.contrib.auth.models import User +from django.core.cache import cache 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) + """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 __unicode__(self): + return self.title - def num_stories(self): - return News.objects.filter(category = self.pk).count() + def num_stories(self): + return News.objects.filter(category = self.pk).count() - class Meta: - verbose_name_plural = 'Categories' - ordering = ('title', ) + 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(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() + """Stories submitted by users are held pending admin approval""" + title = models.CharField(max_length=255) + submitter = models.ForeignKey(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 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() + cache.delete('home_news') + else: + super(PendingStory, self).save(force_insert, force_update) - def __unicode__(self): - return self.title + def __unicode__(self): + return self.title - class Meta: - ordering = ('-date_submitted', ) - verbose_name_plural = 'Pending Stories' + 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(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() + """Model for news stories""" + title = models.CharField(max_length=255) + submitter = models.ForeignKey(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)]) + @models.permalink + def get_absolute_url(self): + return ('news.views.story', [str(self.id)]) - def __unicode__(self): - return self.title + def __unicode__(self): + return self.title - class Meta: - ordering = ('-date_published', ) - verbose_name_plural = 'Stories' + 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 + def can_comment_on(self): + now = datetime.datetime.now() + delta = now - self.date_published + return delta.days < 30 + def save(self, force_insert=False, force_update=False): + super(Story, self).save(force_insert, force_update) + cache.delete('home_news') +