models.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from datetime import timedelta
  2. from django.db import models
  3. from django.db.models import Q
  4. from django.utils import timezone
  5. from misago.users.models import User
  6. class Policy(models.Model):
  7. """
  8. Pruning policy
  9. """
  10. name = models.CharField(max_length=255)
  11. email = models.CharField(max_length=255,null=True,blank=True)
  12. posts = models.PositiveIntegerField(default=0)
  13. registered = models.PositiveIntegerField(default=0)
  14. last_visit = models.PositiveIntegerField(default=0)
  15. def get_model(self):
  16. model = User.objects
  17. if self.email:
  18. if ',' in self.email:
  19. qs = None
  20. for name in self.email.split(','):
  21. name = name.strip().lower()
  22. if name:
  23. if qs:
  24. qs = qs | Q(email__iendswith=name)
  25. else:
  26. qs = Q(email__iendswith=name)
  27. if qs:
  28. model = model.filter(qs)
  29. else:
  30. model = model.filter(email__iendswith=self.email)
  31. if self.posts:
  32. model = model.filter(posts__lt=self.posts)
  33. if self.registered:
  34. date = timezone.now() - timedelta(days=self.registered)
  35. model = model.filter(join_date__gte=date)
  36. if self.last_visit:
  37. date = timezone.now() - timedelta(days=self.last_visit)
  38. model = model.filter(last_date__gte=date)
  39. return model