Trimming > 1000 stories from feeds.

This commit is contained in:
Samuel Clay 2010-01-26 19:59:43 -05:00
parent cdb0e65a3e
commit d748a41d85
3 changed files with 36 additions and 6 deletions

View file

@ -99,7 +99,6 @@ class UserSubscription(models.Model):
stories_db = Story.objects.filter(story_feed=self.feed,
story_date__gte=date_delta)[:100]
# .exclude(id__in=[rs.story.id for rs in read_stories])
print 'Stories_db: %s' % stories_db.count()
stories = self.feed.format_stories(stories_db)
classifier_feeds = ClassifierFeed.objects.filter(user=self.user, feed=self.feed)
classifier_authors = ClassifierAuthor.objects.filter(user=self.user, feed=self.feed)

View file

@ -0,0 +1,21 @@
from django.core.management.base import BaseCommand
from django.core.handlers.wsgi import WSGIHandler
from apps.rss_feeds.models import Feed, Story
from django.core.cache import cache
from apps.rss_feeds.models import Feed
from optparse import OptionParser, make_option
import os
import logging
import errno
class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option("-f", "--feed", dest="feed", default=None),
)
def handle(self, *args, **options):
feeds = Feed.objects.all()
for f in feeds:
f.trim_feed()

View file

@ -157,12 +157,22 @@ class Feed(models.Model):
return author, created
def trim_feed(self):
date_diff = datetime.datetime.now() - datetime.timedelta(self.days_to_trim)
stories = Story.objects.filter(story_feed=self, story_date__lte=date_diff)
for story in stories:
story.story_past_trim_date = True
story.save()
from apps.reader.models import UserStory
stories_deleted_count = 0
stories = Story.objects.filter(story_feed=self).order_by('-story_date')
for story in stories[1000:]:
user_stories = UserStory.objects.filter(story=story)
user_stories_count = user_stories.count()
user_stories.delete()
story.delete()
stories_deleted_count += 1
if stories_deleted_count:
print "Trimming %s stories from %s. %s user stories." % (
stories_deleted_count,
self,
user_stories_count)
def get_stories(self, offset=0, limit=25):
stories = cache.get('feed_stories:%s-%s-%s' % (self.id, offset, limit), [])