models.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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)
  11. hash = 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. class Meta:
  22. index_together = [
  23. ['user', 'hash'],
  24. ]
  25. @property
  26. def is_valid(self):
  27. return is_valid(self)
  28. def get_absolute_url(self):
  29. if self.is_new:
  30. return reverse('misago:go_to_notification', kwargs={
  31. 'notification_id': self.id,
  32. 'hash': self.hash
  33. })
  34. else:
  35. return self.url