From 7b3cbe1dbb93ef32c9b87f7ed62d0b897ca99fa2 Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Mon, 10 Jul 2017 15:36:35 +0300 Subject: [PATCH 1/7] =?UTF-8?q?=D0=92=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B5=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D1=88=D0=B5=D0=BA=20=D0=B2=20=D0=B4=D0=B8=D0=BF?= =?UTF-8?q?=D0=BB=D0=BE=D0=BC=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- courses/models.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/courses/models.py b/courses/models.py index aac726d..c7209e8 100755 --- a/courses/models.py +++ b/courses/models.py @@ -684,14 +684,6 @@ class CourseMap(models.Model): return _next._type, _next.get_obj() - def get_lesson_before(self): - try: - _before = CourseMap.objects.get(course=self.course, sort=self.sort - 2) - except CourseMap.DoesNotExist: - _before = CourseMap.objects.get(course=self.course, sort=0) - - return _before._type, _before.get_obj() - def get_before(self): try: _next = CourseMap.objects.get(course=self.course, sort=self.sort - 1) From 747dd0883f44850c66972942df8e629ebc0b0187 Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Mon, 10 Jul 2017 15:37:19 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B8=D1=81=D0=BA=20=D0=BF=D1=80=D0=BE=D1=88=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D1=83=D1=80=D0=BE=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- courses/views.py | 6 +++--- journals/models.py | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/courses/views.py b/courses/views.py index d89d44e..0d65036 100755 --- a/courses/views.py +++ b/courses/views.py @@ -45,9 +45,9 @@ def course(request, slug): if created: check_journal(journal) _map = CourseMap.objects.filter(course=course).order_by('sort').first() - #_j = _map.get_obj() - #j = HomeworkJ.objects.get(material=_j, student=request.user) - #j.open_material() + _j = _map.get_obj() + j = HomeworkJ.objects.get(material=_j, student=request.user) + j.open_material() else: journal, created = TeacherJ.objects.get_or_create(course=course, student=user_fabric(request.user)) diff --git a/journals/models.py b/journals/models.py index 5666f53..152c1c9 100755 --- a/journals/models.py +++ b/journals/models.py @@ -591,9 +591,7 @@ class LessonJ(models.Model): if _type == 'L': obj = LessonJ elif _type == 'H': - _before = CourseMap.objects.get(token=_before.token) - _type, _before = _before.get_lesson_before() - obj = LessonJ + obj = HomeworkJ elif _type == 'E': obj = ExamJ From 635f72afeb5864ed0081fa4065afb09c0a1f7091 Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Tue, 11 Jul 2017 16:57:03 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D0=B7=D0=BD=D0=B0=D0=B5=D0=BC=20=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0?= =?UTF-8?q?=20=D1=81=D0=BF=D0=B0=D0=B4=D0=B0=D0=B5=D1=82=20=D0=B3=D0=B0?= =?UTF-8?q?=D0=BB=D0=BE=D1=87=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- courses/models.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/courses/models.py b/courses/models.py index c7209e8..99ab1a9 100755 --- a/courses/models.py +++ b/courses/models.py @@ -322,13 +322,6 @@ class CourseTheme(models.Model): return Homework.objects.filter(theme=self).count() def save(self, *args, **kwargs): - # Костыль для поиска ошибки смены галочки - if self.empty != self.empty_old: - log = logging.getLogger('Themes_status_change') - log.error('status change') - self.public_old = self.public - # Костыль конец - if CourseTheme.objects.filter(course=self.course, sort=self.sort).exclude(id=self.id).exists(): # Переформировать порядок test_in = self.sort + 1 From 21ba623e4151fc5b7f8e72c15117c9e6d558977a Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Tue, 11 Jul 2017 17:03:25 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=9F=D0=BE=D0=BC=D0=B5=D0=BD=D1=8F=D0=BB?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D1=83?= =?UTF-8?q?=D1=80=D0=BE=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- journals/models.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/journals/models.py b/journals/models.py index 152c1c9..d37b418 100755 --- a/journals/models.py +++ b/journals/models.py @@ -414,15 +414,6 @@ class CourseThemeJ(models.Model): p.save() return p - def check_lessons(self): - """ Проверка уроков темы на статус. Если сдано - сдана тема""" - for lessonj in LessonJ.objects.filter(parent=self, student=self.student): - if lessonj.success == False: - return False - - return True - - def save(self, *args, **kwargs): if not self.parent: self.parent = self.get_parent() @@ -437,8 +428,11 @@ class CourseThemeJ(models.Model): elif actual_lesson != self.actual_lesson.id: self.actual_lesson = Lesson.objects.get(id=self.make_actual_lesson()) - if self.check_lessons(): - self.success = True + if LessonJ.objects.filter(parent=self, student=self.student).exists(): + if LessonJ.objects.filter(parent=self, student=self.student, success=False).exists(): + self.success = False + else: + self.success = True if self.set_open: if Lesson.objects.filter(theme=self.material).order_by('sort').exists(): From 8865d431fbda0090cdb4d1589b3f956a8dd45b71 Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Tue, 11 Jul 2017 17:07:48 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=D0=B5=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BF=D0=BE=D0=BB=D0=B5=20=D0=B2=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- courses/migrations/0046_auto_20170711_1704.py | 38 +++++++++++++++++++ courses/models.py | 1 - 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 courses/migrations/0046_auto_20170711_1704.py diff --git a/courses/migrations/0046_auto_20170711_1704.py b/courses/migrations/0046_auto_20170711_1704.py new file mode 100644 index 0000000..7ad4302 --- /dev/null +++ b/courses/migrations/0046_auto_20170711_1704.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-07-11 17:04 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0045_merge'), + ] + + operations = [ + migrations.CreateModel( + name='Flow', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255, verbose_name='Название')), + ('description', models.TextField(blank=True, default='', null=True, verbose_name='Описание')), + ('start_flow', models.DateTimeField(default=datetime.datetime.now, verbose_name='Дата начала потока')), + ('created', models.DateTimeField(default=datetime.datetime.now, editable=False, verbose_name='Создан')), + ('modified', models.DateTimeField(auto_now=True, verbose_name='Изменен')), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='Курс')), + ], + options={ + 'ordering': ['-modified'], + 'verbose_name_plural': 'Потоки', + 'verbose_name': 'Поток', + }, + ), + migrations.RemoveField( + model_name='coursetheme', + name='empty_old', + ), + ] diff --git a/courses/models.py b/courses/models.py index 99ab1a9..880d5db 100755 --- a/courses/models.py +++ b/courses/models.py @@ -234,7 +234,6 @@ class CourseTheme(models.Model): empty = models.BooleanField(verbose_name=u'Ты не пройдешь!', help_text=u'Заблокировать дальнейшее прохождение курса. Из-за того, ' u'что курс не заполнен или что-то вроде того.', default=False) - empty_old = models.BooleanField(verbose_name=u'Для проверки галочки', default=False) def __unicode__(self): return u'%s:%s/%s' % (self.sort, self.course, self.title if self.title else self.get__type_display()) From 046b654bbf2cada82c1199abafafb0a6938dcbd3 Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Tue, 11 Jul 2017 17:10:31 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D0=B3=D0=B0=D0=BB?= =?UTF-8?q?=D0=BE=D1=87=D0=BA=D0=B8=20=D0=B2=20=D0=BA=D1=83=D1=80=D1=81?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0047_remove_course_public_old.py | 19 +++++++++++++++++++ courses/models.py | 7 ------- 2 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 courses/migrations/0047_remove_course_public_old.py diff --git a/courses/migrations/0047_remove_course_public_old.py b/courses/migrations/0047_remove_course_public_old.py new file mode 100644 index 0000000..ae4455c --- /dev/null +++ b/courses/migrations/0047_remove_course_public_old.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-07-11 17:09 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0046_auto_20170711_1704'), + ] + + operations = [ + migrations.RemoveField( + model_name='course', + name='public_old', + ), + ] diff --git a/courses/models.py b/courses/models.py index 880d5db..fd25d8c 100755 --- a/courses/models.py +++ b/courses/models.py @@ -77,7 +77,6 @@ class Course(models.Model): direction = models.ForeignKey(MaterialDirection, verbose_name=u'Направление', null=True) mentors = models.ManyToManyField(User, verbose_name=u'Кураторы', null=True, blank=True, related_name='course_mentors') public = models.BooleanField(verbose_name=u'Опубликовать', default=False) - public_old = models.BooleanField(verbose_name=u'Старый статус', default=False) title = models.CharField(verbose_name=u"Заголовок", max_length=255) description = RedactorField(verbose_name=u'Описание', blank=True) image = models.ImageField(verbose_name=u'Изображение', upload_to='course', blank=True) @@ -206,12 +205,6 @@ class Course(models.Model): return '/courses/%s' % self.slug def save(self, *args, **kwargs): - # Костыль для поиска ошибки галочки - if self.public != self.public_old: - log = logging.getLogger('Course_public_change') - log.error('status change') - self.public_old = self.public - # if not self.slug: self.slug = '{0}'.format(translit(self.title)) super(Course, self).save(*args, **kwargs) From af41ee65633db100921b196533783f168149f9ac Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Wed, 12 Jul 2017 15:54:57 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B2=D0=BE=D0=B3=D0=BE=20=D1=83?= =?UTF-8?q?=D1=80=D0=BE=D0=BA=D0=B0=20+=20=D1=81=D1=87=D0=B5=D1=82=D0=B0?= =?UTF-8?q?=20=D1=81=20=D0=BF=D0=BE=D1=82=D0=BE=D0=BA=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- courses/views.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/courses/views.py b/courses/views.py index 0d65036..54023b3 100755 --- a/courses/views.py +++ b/courses/views.py @@ -46,7 +46,10 @@ def course(request, slug): check_journal(journal) _map = CourseMap.objects.filter(course=course).order_by('sort').first() _j = _map.get_obj() - j = HomeworkJ.objects.get(material=_j, student=request.user) + if _map._type == 'H': + j = HomeworkJ.objects.get(material=_j, student=request.user) + if _map._type == 'L': + j = LessonJ.objects.get(material=_j, student=request.user) j.open_material() else: journal, created = TeacherJ.objects.get_or_create(course=course, student=user_fabric(request.user)) @@ -59,11 +62,12 @@ def course(request, slug): start_flow = None if request.user.is_authenticated() and not request.user.is_admin: try: - bill = Bill.objects.get( + bills = Bill.objects.filter( service__course=course, user=request.user, status='F') - if bill.flow: - flow = bill.flow.get_status() - start_flow = bill.flow.start_flow + for bill in bills: + if bill.flow: + flow = bill.flow.get_status() + start_flow = bill.flow.start_flow except Bill.DoesNotExist: pass