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