bansmaintenance.py 921 B

12345678910111213141516171819202122232425
  1. from django.core.management.base import BaseCommand
  2. from django.utils import timezone
  3. from misago.users.models import BanCache
  4. class Command(BaseCommand):
  5. help = 'Runs maintenance on Misago bans system.'
  6. def handle(self, *args, **options):
  7. self.handle_expired_bans()
  8. self.handle_bans_caches()
  9. def handle_expired_bans(self):
  10. queryset = Ban.objects.filter(is_valid=True, valid_until__isnull=False)
  11. queryset = queryset.filter(valid_until__lte=timezone.now().date())
  12. expired_count = queryset.update(is_valid=False)
  13. self.stdout.write('Bans invalidated: %s' expired_count)
  14. def handle_bans_caches(self):
  15. queryset = BanCache.objects.filter(valid_until__isnull=False)
  16. queryset = queryset.filter(valid_until__lte=timezone.now().date())
  17. expired_count = queryset.delete()
  18. self.stdout.write('Ban caches emptied: %s' expired_count)