event.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from django.db import models
  2. from django.utils import timezone
  3. from misago.conf import settings
  4. from misago.threads import threadtypes
  5. from misago.threads.checksums import is_event_valid
  6. class Event(models.Model):
  7. category = models.ForeignKey('misago_categories.Category')
  8. thread = models.ForeignKey('Thread')
  9. author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True,
  10. on_delete=models.SET_NULL)
  11. author_name = models.CharField(max_length=255)
  12. author_slug = models.CharField(max_length=255)
  13. icon = models.CharField(max_length=255)
  14. occured_on = models.DateTimeField(default=timezone.now, db_index=True)
  15. message = models.CharField(max_length=255)
  16. checksum = models.CharField(max_length=64, default='-')
  17. is_hidden = models.BooleanField(default=False)
  18. @property
  19. def is_valid(self):
  20. return is_event_valid(self)
  21. def set_author(self, user):
  22. self.author = user
  23. self.author_name = user.username
  24. self.author_slug = user.slug
  25. @property
  26. def thread_type(self):
  27. return self.category.thread_type
  28. def get_edit_url(self):
  29. return self.thread_type.get_event_edit_url(self)