warnmodel.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from django.db import models
  2. from misago.signals import rename_user
  3. class Warn(models.Model):
  4. user = models.ForeignKey('User', related_name="warning_set")
  5. reason = models.TextField(null=True, blank=True)
  6. reason_preparsed = models.TextField(null=True, blank=True)
  7. given_on = models.DateTimeField()
  8. giver = models.ForeignKey('User', null=True, blank=True,
  9. on_delete=models.SET_NULL, related_name="warnings_given_set")
  10. giver_username = models.CharField(max_length=255)
  11. giver_slug = models.SlugField(max_length=255)
  12. giver_ip = models.GenericIPAddressField()
  13. giver_agent = models.CharField(max_length=255)
  14. canceled = models.BooleanField(default=False)
  15. canceled_on = models.DateTimeField(null=True, blank=True)
  16. canceler = models.ForeignKey('User', null=True, blank=True,
  17. on_delete=models.SET_NULL, related_name="warnings_canceled_set")
  18. canceler_username = models.CharField(max_length=255, null=True, blank=True)
  19. canceler_slug = models.SlugField(max_length=255, null=True, blank=True)
  20. canceler_ip = models.GenericIPAddressField(null=True, blank=True)
  21. canceler_agent = models.CharField(max_length=255, null=True, blank=True)
  22. class Meta:
  23. app_label = 'misago'
  24. def rename_user_handler(sender, **kwargs):
  25. Warn.objects.filter(giver=sender).update(
  26. giver_username=sender.username,
  27. giver_slug=sender.username_slug,
  28. )
  29. Warn.objects.filter(canceler=sender).update(
  30. canceler_username=sender.username,
  31. canceler_slug=sender.username_slug,
  32. )
  33. rename_user.connect(rename_user_handler, dispatch_uid="rename_user_warnings")