from django.core.management.base import BaseCommand from django.db.models import Min from hc.api.models import Notification, Check class Command(BaseCommand): help = 'Prune stored notifications' def handle(self, *args, **options): total = 0 q = Check.objects.filter(n_pings__gt=100) q = q.annotate(min_ping_date=Min("ping__created")) for check in q: qq = Notification.objects.filter(owner_id=check.id, created__lt=check.min_ping_date) num_deleted, _ = qq.delete() total += num_deleted return "Done! Pruned %d notifications." % total