Без опису

models.py 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. # Link a SeumBook counter to a Telegram User
  8. class TelegramUser(models.Model):
  9. counter = models.ForeignKey('counter.Counter', verbose_name=_('counter'))
  10. telegram_user_id = models.BigIntegerField(_('telegram_user_id'), unique=True)
  11. class Meta:
  12. verbose_name = _('telegram_user')
  13. verbose_name_plural = _('telegram_users')
  14. def __str__(self):
  15. return _('%(counter)s is %(telegram_user_id)d') % {'counter': self.counter, 'telegram_user_id': self.telegram_user_id}
  16. # When a user wants to link his SeumBook account to his Telegram account,
  17. # he/she send a message to the bot in a private chat, then the bot answers with
  18. # an URL to the SeumBook website containing a `verif_key`. The user then log in
  19. # on the SeumBook website, and based on the `verif_key` parameter, we find the
  20. # corresponding Telegram User.
  21. # This object remember which Telegram User received which `verif_key`
  22. class TelegramUserCheck(models.Model):
  23. telegram_user_id = models.BigIntegerField(_('telegram_user_id'))
  24. verif_key = models.TextField(_('verify_key'), unique=True)
  25. class Meta:
  26. verbose_name = _('telegram_user_check')
  27. verbose_name_plural = _('telegram_user_checks')
  28. def __str__(self):
  29. return _('%(telegram_user_id)d has verif key %(verif_key)s') % {'telegram_user_id': self.telegram_user_id, 'verif_key': self.verif_key}
  30. # Memorize which telegram user is in which chat
  31. class TelegramUserChat(models.Model):
  32. telegram_user_id = models.BigIntegerField(_('telegram_user_id'))
  33. telegram_chat_id = models.BigIntegerField(_('telegram_chat_id'))
  34. class Meta:
  35. verbose_name = _('telegram_user_chat')
  36. verbose_name_plural = _('telegram_user_chats')
  37. unique_together = ('telegram_user_id', 'telegram_chat_id')
  38. def __str__(self):
  39. return _('%(telegram_user_id)d is in the chat %(telegram_chat)d') % {'telegram_user_id': self.telegram_user_id, 'telegram_chat_id': self.telegram_chat_id}
  40. # Memorize the Telegram chats in which the bot are, and the options of them
  41. class TelegramChat(models.Model):
  42. chat_id = models.BigIntegerField(_('telegram_chat_id'), unique=True)
  43. # notify_only_members: True: only when somebody we know is in the chat has the
  44. # seum, we notify the channel
  45. # notify_only_members: False: we notify the channel for every new seum
  46. notify_only_members = models.BooleanField(_('notify_only_members'))
  47. class Meta:
  48. verbose_name = _('telegram_chat')
  49. verbose_name_plural = _('telegram_chats')
  50. def __str__(self):
  51. return _('%(chat_id)d is a telegram chat, with option notify_only_members to %(notify_only_members)s') % {'chat_id': self.chat_id, 'notify_only_members': self.notify_only_members}