From bc7accc593c0eec0a4bdfe5de6c939a0b30aef40 Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Wed, 22 Sep 2010 15:57:55 -0400 Subject: [PATCH] Trimming feeds on every update. --- apps/rss_feeds/models.py | 10 +++++++--- utils/feed_fetcher.py | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/rss_feeds/models.py b/apps/rss_feeds/models.py index 2dbfebeef..d2b9cd502 100644 --- a/apps/rss_feeds/models.py +++ b/apps/rss_feeds/models.py @@ -412,15 +412,19 @@ class Feed(models.Model): self.save_popular_authors(feed_authors=feed_authors[:-1], lock=lock) def trim_feed(self): - # from apps.reader.models import MUserStory + from apps.reader.models import MUserStory stories = MStory.objects( story_feed_id=self.pk, ).order_by('-story_date') if stories.count() > 500: - print 'Found %s stories in %s. Trimming...' % (stories.count(), self) + # print 'Found %s stories in %s. Trimming...' % (stories.count(), self), extra_stories = MStory.objects(story_feed_id=self.pk, story_date__lte=stories[500].story_date) extra_stories.delete() - print "Deleted stories, %s left." % MStory.objects(story_feed_id=self.pk).count() + # print "Deleted stories, %s left." % MStory.objects(story_feed_id=self.pk).count() + userstories = MUserStory.objects(feed_id=self.pk, read_date__lte=stories[500].story_date) + if userstories.count(): + # print "Found %s user stories. Deleting..." % userstories.count() + userstories.delete() def get_stories(self, offset=0, limit=25, force=False): stories = cache.get('feed_stories:%s-%s-%s' % (self.id, offset, limit), []) diff --git a/utils/feed_fetcher.py b/utils/feed_fetcher.py index a843169a0..43ea7f0e4 100644 --- a/utils/feed_fetcher.py +++ b/utils/feed_fetcher.py @@ -241,6 +241,7 @@ class ProcessFeed: u' '.join(u'%s=%d' % (self.entry_trans[key], ret_values[key]) for key in self.entry_keys),)) self.feed.update_all_statistics(lock=self.lock) + self.feed.trim_feed() self.feed.save_feed_history(200, "OK") return FEED_OK, ret_values