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()