Aucune description

models.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from django.db import models
  2. from datetime import datetime
  3. from babel.dates import format_timedelta
  4. from django.contrib.auth.models import User
  5. # Create your models here.
  6. class Counter(models.Model):
  7. name = models.CharField('nom', max_length=60)
  8. email = models.EmailField('email', max_length=264,
  9. default='null@localhost')
  10. trigramme = models.CharField('trigramme', max_length=3)
  11. user = models.ForeignKey(User, blank=True, null=True,
  12. verbose_name='utilisateur associé')
  13. email_notifications = models.BooleanField(
  14. 'notifications par email', default=False)
  15. sort_by_score = models.BooleanField(
  16. 'trier par SeumScore™', default=True)
  17. def __str__(self):
  18. return '%s (%s)' % (self.trigramme, self.name)
  19. class Meta:
  20. verbose_name = 'compteur'
  21. class Reset(models.Model):
  22. timestamp = models.DateTimeField('date et heure', auto_now_add=True)
  23. reason = models.TextField('raison')
  24. counter = models.ForeignKey('Counter', related_name='counter',
  25. verbose_name='victime')
  26. who = models.ForeignKey('Counter', related_name='who',
  27. verbose_name='fouteur de seum',
  28. blank=True, null=True, default=None)
  29. def __str__(self):
  30. if (self.who is None or
  31. self.who.id == self.counter.id):
  32. return '%s : %s (%s)' % (self.counter,
  33. format_timedelta(
  34. datetime.now() -
  35. self.timestamp.replace(tzinfo=None),
  36. locale='fr'), self.reason)
  37. else:
  38. return '%s à %s : %s (%s)' % (self.who, self.counter,
  39. format_timedelta(
  40. datetime.now() -
  41. self.timestamp.replace(
  42. tzinfo=None),
  43. locale='fr'), self.reason)
  44. class Meta:
  45. verbose_name = 'remise à zéro'
  46. verbose_name_plural = 'remises à zéro'
  47. class Like(models.Model):
  48. liker = models.ForeignKey('Counter', verbose_name='likeur')
  49. reset = models.ForeignKey('Reset', verbose_name='seum')
  50. timestamp = models.DateTimeField('date et heure', auto_now_add=True)
  51. class Meta:
  52. verbose_name = 'like'
  53. verbose_name_plural = 'likes'
  54. unique_together = ('liker', 'reset')
  55. def __str__(self):
  56. return '%s aime %s' % (self.liker, self.reset)
  57. class Keyword(models.Model):
  58. text = models.CharField('texte', max_length=128, unique=True)
  59. class Meta:
  60. verbose_name = 'mot-clé'
  61. verbose_name_plural = 'mots-clés'
  62. def __str__(self):
  63. return '#%s' % (self.text)
  64. class Hashtag(models.Model):
  65. keyword = models.ForeignKey('Keyword', verbose_name='hashtag')
  66. reset = models.ForeignKey('Reset', verbose_name='remise à zéro')
  67. class Meta:
  68. verbose_name = 'hashtag'
  69. verbose_name_plural = 'hashtags'
  70. def __str__(self):
  71. return '%s pour %s' % (self.keyword, self.reset)