parent
84143ebeb4
commit
afb70f10d9
19 changed files with 216 additions and 174 deletions
@ -0,0 +1,6 @@ |
||||
# encoding=utf-8 |
||||
|
||||
from .other import Account, Progress, Invite |
||||
from .user import User |
||||
|
||||
|
||||
@ -0,0 +1,68 @@ |
||||
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 == self.get_objects_in_progress() |
||||
|
||||
class Meta: |
||||
verbose_name = 'Прогресс пользователя' |
||||
verbose_name_plural = 'Прогресс пользователя' |
||||
unique_together = (("user", "course"),) |
||||
@ -0,0 +1,20 @@ |
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11.6 on 2017-12-01 20:12 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('maps', '0004_auto_20171129_1447'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='coursemap', |
||||
name='name', |
||||
field=models.CharField(default='Линейное прохождение', max_length=255, verbose_name='Имя прохождения'), |
||||
), |
||||
] |
||||
Loading…
Reference in new issue