|
|
@ -0,0 +1,22 @@ |
|
|
|
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=0) |
|
|
|
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 |