from django.conf import settings from django.contrib.postgres.fields import ArrayField from django.db import models from phonenumber_field.modelfields import PhoneNumberField class Invite(models.Model): owner = models.OneToOneField(to=settings.AUTH_USER_MODEL, verbose_name="Кому приглошение", null=True, unique=True) hash = models.CharField(verbose_name="Уникальный код", max_length=15, unique=True) date = models.DateTimeField(verbose_name="Дата сгорания приглошения", null=True, blank=True) class Meta: verbose_name = 'Приглошение в систему' verbose_name_plural = 'Приглошения в систему' class ResetPassword(Invite): password = models.CharField(max_length=63, verbose_name="Новый пароль, если есть") class Meta: verbose_name = "Запрос на сброс пароля" verbose_name_plural = "Запросы на сброс пароля" class Account(models.Model): GENDER_CHOICES = ( (0, 'undefined'), (1, 'male'), (2, 'female'), ) b_day = models.DateField(blank=True, null=True) city = models.CharField(max_length=63, null=True, blank=True) gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0) owner = models.OneToOneField(to=settings.AUTH_USER_MODEL, null=True) photo = models.ImageField(default='/static/default/access/default.png', upload_to='user/photo/') phone = PhoneNumberField(blank=True, null=True) def __str__(self): return self.owner.email class Meta: verbose_name = 'Дополнительная информация о пользователе' verbose_name_plural = 'Дополнительная информация о пользователе' class Progress(models.Model): teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь по умолчанию", related_name='teacher_progress') user = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name='Студент') route = models.CharField(max_length=15, verbose_name='Токен прохождения') def __str__(self): return '%s' % (self.user.email,) class Meta: verbose_name = 'Прогресс пользователя' verbose_name_plural = 'Прогресс пользователя' unique_together = (("user", "route"),) class PivotProgressVertex(models.Model): VERTEX_STATUS = ( (2, 'Выполненно'), (1, 'Ожидание'), (0, 'Не выполненно'), ) teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь",) progress = models.ForeignKey(to=Progress) vertex = models.CharField(max_length=15, blank=True, verbose_name='Ссылки на узлы') status = models.SmallIntegerField(choices=VERTEX_STATUS, default=0) comment = ArrayField(models.CharField(max_length=15, verbose_name='Ссылки на комменты', unique=True), default=[]) date = models.DateTimeField(verbose_name='Дата зачтения задания', blank=True, null=True)