warnmodel.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435
  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. giver = models.ForeignKey('User', null=True, blank=True,
  6. on_delete=models.SET_NULL, related_name="warnings_given_set")
  7. giver_name = models.CharField(max_length=255)
  8. giver_slug = models.SlugField(max_length=255)
  9. date = models.DateTimeField()
  10. ip = models.GenericIPAddressField()
  11. agent = models.CharField(max_length=255)
  12. reason = models.TextField(null=True, blank=True)
  13. reason_preparsed = models.TextField(null=True, blank=True)
  14. canceled = models.BooleanField(default=False)
  15. canceler = models.ForeignKey('User', null=True, blank=True,
  16. on_delete=models.SET_NULL, related_name="warnings_canceled_set")
  17. canceler_name = models.CharField(max_length=255, null=True, blank=True)
  18. canceler_slug = models.SlugField(max_length=255, null=True, blank=True)
  19. class Meta:
  20. app_label = 'misago'
  21. def rename_user_handler(sender, **kwargs):
  22. Warn.objects.filter(giver=sender).update(
  23. giver_name=sender.username,
  24. giver_slug=sender.username_slug,
  25. )
  26. Warn.objects.filter(canceler=sender).update(
  27. canceler_name=sender.username,
  28. canceler_slug=sender.username_slug,
  29. )
  30. rename_user.connect(rename_user_handler, dispatch_uid="rename_user_warnings")