説明なし

models.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. from datetime import datetime
  2. from django.contrib.auth.models import User
  3. from django.db import models
  4. from django.utils.translation import ugettext_lazy as _, get_language
  5. import arrow
  6. from babel.dates import format_timedelta
  7. class Counter(models.Model):
  8. name = models.CharField(_('name'), max_length=60)
  9. email = models.EmailField(_('email'), max_length=264, default='null@localhost')
  10. trigramme = models.CharField(_('trigram'), max_length=3)
  11. user = models.ForeignKey(User, blank=True, null=True, verbose_name=_('associated user'))
  12. email_notifications = models.BooleanField(_('email notifications'), default=False)
  13. sort_by_score = models.BooleanField(_('sort by SeumScore'), default=True)
  14. def __str__(self):
  15. return _('%(trigram)s (%(name)s)') % {'trigram': self.trigramme, 'name': self.name}
  16. class Meta:
  17. verbose_name = _('counter')
  18. class Reset(models.Model):
  19. timestamp = models.DateTimeField(_('datetime'), auto_now_add=True)
  20. reason = models.TextField(_('reason'))
  21. counter = models.ForeignKey('Counter', related_name='resets', verbose_name=_('victim'))
  22. who = models.ForeignKey('Counter', related_name='who', verbose_name=_('seum giver'), blank=True, null=True, default=None)
  23. def __str__(self):
  24. if self.who is None or self.who == self.counter:
  25. return _('%(counter)s : %(datetime)s (%(reason)s)') % {
  26. 'counter': self.counter,
  27. 'datetime': arrow.Arrow.fromdatetime(self.timestamp).humanize(locale=(get_language() or 'en')), # dirty hack...
  28. 'reason': self.reason
  29. }
  30. else:
  31. return '%(who)s to %(counter)s : %(datetime)s (%(reason)s)' % {
  32. 'who': self.who,
  33. 'counter': self.counter,
  34. 'datetime': arrow.Arrow.fromdatetime(self.timestamp).humanize(locale=(get_language() or 'en')),
  35. 'reason': self.reason
  36. }
  37. class Meta:
  38. verbose_name = _('reset')
  39. verbose_name_plural = _('resets')
  40. class Like(models.Model):
  41. liker = models.ForeignKey('Counter', verbose_name=_('liker'), related_name='likes')
  42. reset = models.ForeignKey('Reset', verbose_name=_('seum'), related_name='likes')
  43. timestamp = models.DateTimeField(_('datetime'), auto_now_add=True)
  44. class Meta:
  45. verbose_name = _('like')
  46. verbose_name_plural = _('likes')
  47. unique_together = ('liker', 'reset')
  48. def __str__(self):
  49. return _('%(liker)s likes %(reset)s') % {'liker': self.liker, 'reset': self.reset}
  50. class Keyword(models.Model):
  51. text = models.CharField('texte', max_length=128, unique=True)
  52. class Meta:
  53. verbose_name = _('keyword')
  54. verbose_name_plural = _('keywords')
  55. def __str__(self):
  56. return '#%s' % (self.text)
  57. class Hashtag(models.Model):
  58. keyword = models.ForeignKey('Keyword', verbose_name=_('hashtag'), related_name='hashtags')
  59. reset = models.ForeignKey('Reset', verbose_name=_('reset'), related_name='hashtags')
  60. class Meta:
  61. verbose_name = _('hashtag')
  62. verbose_name_plural = _('hashtags')
  63. def __str__(self):
  64. return _('%(keyword)s for %(who)s') % {'keyword': self.keyword, 'who': self.reset}