NewsBlur-viq/apps/rss_feeds/management/commands/count_subscribers.py
2020-06-15 02:54:37 -04:00

34 lines
No EOL
1.4 KiB
Python

from django.core.management.base import BaseCommand
from apps.rss_feeds.models import Feed
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("-f", "--feed", dest="feed", default=None)
parser.add_argument("-t", "--title", dest="title", default=None)
parser.add_argument("-V", "--verbose", dest="verbose", action="store_true")
parser.add_argument("-D", "--delete", dest="delete", action="store_true")
def handle(self, *args, **options):
if options['title']:
feeds = Feed.objects.filter(feed_title__icontains=options['title'])
elif options['feed']:
feeds = Feed.objects.filter(pk=options['feed'])
else:
feeds = Feed.objects.all()
feeds_count = feeds.count()
for i in range(0, feeds_count, 100):
feeds = Feed.objects.all()[i:i+100]
for feed in feeds.iterator():
feed.count_subscribers(verbose=options['verbose'])
if options['delete']:
print("# Deleting old feeds...")
old_feeds = Feed.objects.filter(num_subscribers=0)
for feed in old_feeds:
feed.count_subscribers(verbose=True)
if feed.num_subscribers == 0:
print(' ---> Deleting: [%s] %s' % (feed.pk, feed))
feed.delete()