mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Trimming > 1000 stories from feeds.
This commit is contained in:
parent
cdb0e65a3e
commit
d748a41d85
3 changed files with 36 additions and 6 deletions
|
@ -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)
|
||||
|
|
21
apps/rss_feeds/management/commands/trim_feeds.py
Normal file
21
apps/rss_feeds/management/commands/trim_feeds.py
Normal 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()
|
||||
|
|
@ -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), [])
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue