You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

68 lines
2.8 KiB

from django.conf import settings
from django.db import models
from courses.models import Course, Vertex
from maps.models import CourseRoute
class Invite(models.Model):
owner = models.OneToOneField(to=settings.AUTH_USER_MODEL, null=True)
hash = models.CharField(max_length=15)
date = models.DateTimeField(null=True, blank=True)
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(null=True, blank=True, default='/static/default/access/default.png', upload_to='user/photo/')
phone = models.CharField(max_length=15, null=True, blank=True)
def __str__(self):
return self.owner.email
class Meta:
verbose_name = 'Дополнительная информация о пользователе'
verbose_name_plural = 'Дополнительная информация о пользователе'
class Progress(models.Model):
user = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name='Студент', null=True)
course = models.ForeignKey(to=Course, verbose_name='Курс', null=True)
progress_list = models.ManyToManyField(to=Vertex, verbose_name='Лист пройденных объектов', blank=True)
template = models.OneToOneField(to=CourseRoute, blank=True, null=True, verbose_name='Шаблон для прохождения если '
'не указан явно смотри '
'функцию get_template()')
def __str__(self):
return '%s %s' % (
self.user.email,
self.course.title,
)
def get_template(self):
return self.template if self.template else self.course.route
def is_finish(self):
return self.get_template().is_finish(self.user)
def get_objects_in_progress(self):
return self.get_template().get_active_objects(self.user)
def is_access(self, vertex):
return vertex in self.progress_list.all() or vertex in self.get_objects_in_progress()
class Meta:
verbose_name = 'Прогресс пользователя'
verbose_name_plural = 'Прогресс пользователя'
unique_together = (("user", "course"),)