models.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.conf import settings
  2. from django.core.urlresolvers import reverse
  3. from django.db import models
  4. from django.utils import timezone
  5. from misago.notifications.checksums import is_valid
  6. class Notification(models.Model):
  7. user = models.ForeignKey(settings.AUTH_USER_MODEL,
  8. related_name='misago_notifications')
  9. is_new = models.BooleanField(default=True)
  10. date = models.DateTimeField(default=timezone.now, db_index=True)
  11. trigger = models.CharField(max_length=8)
  12. message = models.TextField()
  13. checksum = models.CharField(max_length=64, default='-')
  14. url = models.TextField()
  15. sender = models.ForeignKey(settings.AUTH_USER_MODEL,
  16. on_delete=models.SET_NULL,
  17. related_name='misago_notifications_by',
  18. blank=True, null=True)
  19. sender_username = models.CharField(max_length=255, blank=True, null=True)
  20. sender_slug = models.CharField(max_length=255, blank=True, null=True)
  21. @property
  22. def is_valid(self):
  23. return is_valid(self)
  24. def get_absolute_url(self):
  25. if self.is_new:
  26. return reverse('misago:go_to_notification', kwargs={
  27. 'notification_id': self.id,
  28. 'trigger': self.trigger
  29. })
  30. else:
  31. return self.url