From fe94a55f1363caeae08fe7f8696e2d984000d031 Mon Sep 17 00:00:00 2001 From: Alexander Zolotarev Date: Mon, 18 Sep 2017 08:25:46 +0300 Subject: [PATCH 1/7] new migrations files --- access/migrations/0090_auto_20170918_0811.py | 21 ++++++++ courses/migrations/0045_auto_20170810_0904.py | 22 -------- courses/migrations/0045_auto_20170918_0811.py | 53 +++++++++++++++++++ courses/migrations/0048_normalmap.py | 24 --------- courses/migrations/0049_auto_20170907_1753.py | 25 --------- finance/migrations/0071_auto_20170918_0811.py | 42 +++++++++++++++ .../migrations/0073_auto_20170918_0811.py | 25 +++++++++ library/migrations/0023_auto_20170918_0811.py | 36 +++++++++++++ .../migrations/0091_auto_20170918_0811.py | 30 +++++++++++ .../migrations/0021_auto_20170918_0811.py | 31 +++++++++++ 10 files changed, 238 insertions(+), 71 deletions(-) create mode 100644 access/migrations/0090_auto_20170918_0811.py delete mode 100644 courses/migrations/0045_auto_20170810_0904.py create mode 100644 courses/migrations/0045_auto_20170918_0811.py delete mode 100644 courses/migrations/0048_normalmap.py delete mode 100644 courses/migrations/0049_auto_20170907_1753.py create mode 100644 finance/migrations/0071_auto_20170918_0811.py create mode 100644 journals/migrations/0073_auto_20170918_0811.py create mode 100644 library/migrations/0023_auto_20170918_0811.py create mode 100644 management/migrations/0091_auto_20170918_0811.py create mode 100644 practice/migrations/0021_auto_20170918_0811.py diff --git a/access/migrations/0090_auto_20170918_0811.py b/access/migrations/0090_auto_20170918_0811.py new file mode 100644 index 0000000..abd841b --- /dev/null +++ b/access/migrations/0090_auto_20170918_0811.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-09-18 08:11 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0089_auto_20170810_0904'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='delay_date', + field=models.DateTimeField(blank=True, default=django.utils.timezone.now, null=True, verbose_name='Задержка до. Не включая этот день.'), + ), + ] diff --git a/courses/migrations/0045_auto_20170810_0904.py b/courses/migrations/0045_auto_20170810_0904.py deleted file mode 100644 index 4f300cd..0000000 --- a/courses/migrations/0045_auto_20170810_0904.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.3 on 2017-08-10 09: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', '0044_auto_20170621_1548'), - ] - - operations = [ - migrations.AlterField( - model_name='lesson', - name='on_comment', - field=models.CharField(choices=[('N', 'Включены'), ('F', 'Отключены'), ('T', 'Подчиняется теме')], default='T', help_text='https://go.skillbox.ru/management/faq/37', max_length=1, verbose_name='Блок комментариев'), - ), - ] diff --git a/courses/migrations/0045_auto_20170918_0811.py b/courses/migrations/0045_auto_20170918_0811.py new file mode 100644 index 0000000..9144b64 --- /dev/null +++ b/courses/migrations/0045_auto_20170918_0811.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-09-18 08:11 +from __future__ import unicode_literals + +import datetime +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0044_auto_20170621_1548'), + ] + + operations = [ + migrations.AlterField( + model_name='course', + name='mentors', + field=models.ManyToManyField(blank=True, related_name='course_mentors', to=settings.AUTH_USER_MODEL, verbose_name='Кураторы'), + ), + migrations.AlterField( + model_name='diploma', + name='date_size', + field=models.IntegerField(null=True, verbose_name='Размер даты'), + ), + migrations.AlterField( + model_name='diploma', + name='key', + field=models.IntegerField(verbose_name='Последний ключ'), + ), + migrations.AlterField( + model_name='diploma', + name='key_size', + field=models.IntegerField(null=True, verbose_name='Размер ключа'), + ), + migrations.AlterField( + model_name='diploma', + name='name_size', + field=models.IntegerField(null=True, verbose_name='Размер имени'), + ), + migrations.AlterField( + model_name='lesson', + name='on_comment', + field=models.CharField(choices=[('N', 'Включены'), ('F', 'Отключены'), ('T', 'Подчиняется теме')], default='T', help_text='https://go.skillbox.ru/management/faq/37', max_length=1, verbose_name='Блок комментариев'), + ), + migrations.AlterField( + model_name='materialdirection', + name='mentors', + field=models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name='Кураторы'), + ), + ] diff --git a/courses/migrations/0048_normalmap.py b/courses/migrations/0048_normalmap.py deleted file mode 100644 index 20d3589..0000000 --- a/courses/migrations/0048_normalmap.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.3 on 2017-09-04 13:56 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0047_auto_20170904_1355'), - ] - - operations = [ - migrations.CreateModel( - name='NormalMap', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('json_tree', models.TextField(default='')), - ('course', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='courses.Course')), - ], - ), - ] diff --git a/courses/migrations/0049_auto_20170907_1753.py b/courses/migrations/0049_auto_20170907_1753.py deleted file mode 100644 index 5e51c04..0000000 --- a/courses/migrations/0049_auto_20170907_1753.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.3 on 2017-09-07 17:53 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0048_normalmap'), - ] - - operations = [ - migrations.AddField( - model_name='normalmap', - name='independent_elements', - field=models.TextField(default=''), - ), - migrations.AlterField( - model_name='course', - name='level', - field=models.CharField(choices=[('B', 'Базовый'), ('A', 'Продвинутый'), ('E', 'Экспертный'), ('B+A', 'Базовый + Продвинутый')], default='B', max_length=3, verbose_name='Уровень'), - ), - ] diff --git a/finance/migrations/0071_auto_20170918_0811.py b/finance/migrations/0071_auto_20170918_0811.py new file mode 100644 index 0000000..ddf5f41 --- /dev/null +++ b/finance/migrations/0071_auto_20170918_0811.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-09-18 08:11 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0045_auto_20170918_0811'), + ('finance', '0070_auto_20170424_1638'), + ] + + operations = [ + migrations.AlterField( + model_name='bill', + name='create_letters', + field=models.ManyToManyField(blank=True, editable=False, related_name='bill_create_letter', to='service.MailBox', verbose_name='Письма при создании'), + ), + migrations.AlterField( + model_name='bill', + name='finish_letters', + field=models.ManyToManyField(blank=True, editable=False, related_name='bill_finish_letter', to='service.MailBox', verbose_name='Письма завершения'), + ), + migrations.AlterField( + model_name='installment', + name='payments', + field=models.ManyToManyField(blank=True, related_name='bill_point', to='finance.Bill', verbose_name='Платежи'), + ), + migrations.AlterField( + model_name='price', + name='included', + field=models.ManyToManyField(blank=True, help_text='Если задействовать эту функцию, стандартная схема подписок будет не активна', to='courses.CourseMap', verbose_name='Включены'), + ), + migrations.AlterField( + model_name='requestalert', + name='requests', + field=models.ManyToManyField(blank=True, editable=False, to='finance.ServiceRequest', verbose_name='Количество заявок'), + ), + ] diff --git a/journals/migrations/0073_auto_20170918_0811.py b/journals/migrations/0073_auto_20170918_0811.py new file mode 100644 index 0000000..cb51589 --- /dev/null +++ b/journals/migrations/0073_auto_20170918_0811.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-09-18 08:11 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('journals', '0072_auto_20170810_0904'), + ] + + operations = [ + migrations.AlterField( + model_name='diplomaj', + name='key', + field=models.IntegerField(blank=True, null=True, verbose_name='Ключ'), + ), + migrations.AlterField( + model_name='teacherj', + name='waiting', + field=models.ManyToManyField(blank=True, related_name='map_waiting', to='courses.CourseMap', verbose_name='Доп изучения'), + ), + ] diff --git a/library/migrations/0023_auto_20170918_0811.py b/library/migrations/0023_auto_20170918_0811.py new file mode 100644 index 0000000..cec297c --- /dev/null +++ b/library/migrations/0023_auto_20170918_0811.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-09-18 08:11 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('library', '0022_auto_20161101_1321'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='comments', + field=models.ManyToManyField(blank=True, editable=False, to='management.Comment', verbose_name='Комментарии'), + ), + migrations.AlterField( + model_name='article', + name='favorite', + field=models.ManyToManyField(blank=True, editable=False, related_name='article_as_favorites', to=settings.AUTH_USER_MODEL, verbose_name='В фаворитах'), + ), + migrations.AlterField( + model_name='article', + name='likes', + field=models.ManyToManyField(blank=True, editable=False, max_length=255, related_name='acticle_likes', to=settings.AUTH_USER_MODEL, verbose_name='Лайки'), + ), + migrations.AlterField( + model_name='article', + name='tags', + field=models.ManyToManyField(blank=True, to='library.Tags', verbose_name='Теги'), + ), + ] diff --git a/management/migrations/0091_auto_20170918_0811.py b/management/migrations/0091_auto_20170918_0811.py new file mode 100644 index 0000000..233c02b --- /dev/null +++ b/management/migrations/0091_auto_20170918_0811.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-09-18 08:11 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('management', '0090_auto_20161230_1643'), + ] + + operations = [ + migrations.AlterField( + model_name='comment', + name='answers', + field=models.ManyToManyField(blank=True, editable=False, related_name='_comment_answers_+', to='management.Comment', verbose_name='Форумные ответы'), + ), + migrations.AlterField( + model_name='comment', + name='replies', + field=models.ManyToManyField(blank=True, editable=False, related_name='_comment_replies_+', to='management.Comment', verbose_name='Ответы'), + ), + migrations.AlterField( + model_name='faq', + name='comments', + field=models.ManyToManyField(blank=True, editable=False, to='management.Comment', verbose_name='Комментарии'), + ), + ] diff --git a/practice/migrations/0021_auto_20170918_0811.py b/practice/migrations/0021_auto_20170918_0811.py new file mode 100644 index 0000000..1ea42b9 --- /dev/null +++ b/practice/migrations/0021_auto_20170918_0811.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-09-18 08:11 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('practice', '0020_workshop_body'), + ] + + operations = [ + migrations.AlterField( + model_name='datasheet', + name='users', + field=models.ManyToManyField(blank=True, editable=False, to=settings.AUTH_USER_MODEL, verbose_name='Пользователи'), + ), + migrations.AlterField( + model_name='workshop', + name='tools', + field=models.ManyToManyField(blank=True, to='practice.WorkshopTools', verbose_name='Используемые инструменты'), + ), + migrations.AlterField( + model_name='workshop', + name='users', + field=models.ManyToManyField(blank=True, editable=False, to=settings.AUTH_USER_MODEL, verbose_name='Пользователи'), + ), + ] From bed98e30b02cfc6637d5175f1d3fc96069c174d5 Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 18 Sep 2017 12:46:17 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20api=20=D1=8E=D0=B7=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- access/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/access/serializers.py b/access/serializers.py index 72c81e7..adc019e 100644 --- a/access/serializers.py +++ b/access/serializers.py @@ -6,4 +6,4 @@ class UserInitSerializer(serializers.ModelSerializer): class Meta: model = get_user_model() - fields = '__all__' \ No newline at end of file + fields = ['id', 'email', 'phone', 'name', 'fname', 'oname', 'city', 'd_day'] \ No newline at end of file From 29d695fa78d90799d74899fe3da6789f20ec9cbf Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 18 Sep 2017 12:56:36 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5?= =?UTF-8?q?=D1=81=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- access/new_urls.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/access/new_urls.py b/access/new_urls.py index bf13a00..dea2ecb 100644 --- a/access/new_urls.py +++ b/access/new_urls.py @@ -3,5 +3,10 @@ from access import new_view as views urlpatterns = [ url(r'teachers/$', views.TeacherListView.as_view()), + url(r'info/$', views.InfoUserView.as_view()), url(r'check/$', views.CheckUserView.as_view()), + url(r'registration/$', views.RegistrationView.as_view()), + url(r'change_password/$', views.ChangePasswordView.as_view()), + url(r'login/$', views.LoginView.as_view()), + url(r'logout/$', views.LogoutView.as_view()), ] \ No newline at end of file From 89f872f98c4983af0f924c1433c041ecf77e3e73 Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 18 Sep 2017 12:58:02 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5?= =?UTF-8?q?=D1=81=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- access/new_view.py | 68 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/access/new_view.py b/access/new_view.py index 8dd0b67..80c05aa 100644 --- a/access/new_view.py +++ b/access/new_view.py @@ -5,6 +5,7 @@ from rest_framework.renderers import JSONRenderer from rest_framework.response import Response from access.serializers import UserInitSerializer +from courses.models import Course class TeacherListView(APIView): @@ -12,11 +13,18 @@ class TeacherListView(APIView): status_code = 200 def get(self, request): - return Response([teacher.full_name() for teacher in get_user_model().objects.filter( + kwargs = dict( in_role='T', is_active=True, reg_status=4, - )], self.status_code) + ) + res = [] + course_id = request.GET.get('course_id', 0) + if course_id: + kwargs['course_teachers'] = Course.objects.get(id=course_id) + for teacher in get_user_model().objects.filter(**kwargs): + res.append(teacher.full_name()) + return Response(res, self.status_code) class CheckUserView(APIView): @@ -29,20 +37,64 @@ class CheckUserView(APIView): return Response(False, status=self.status_code) -class LoginView(APIView): +class InfoUserView(APIView): renderer_classes = (JSONRenderer,) status_code = 200 def get(self, request): + if request.user.is_authenticated(): + return Response(UserInitSerializer(request.user).data, status=self.status_code) + return Response('anonymous', status=self.status_code) + + +class RegistrationView(APIView): + renderer_classes = (JSONRenderer,) + + @staticmethod + def post(request): + try: + user = get_user_model().objects.get(email=request.JSON['email'].lower()) + except get_user_model().DoesNotExist: + user = get_user_model().objects.create_user( + email=request.JSON['email'].lower(), + ) + user.set_password(request.JSON['password']) + user.reg_status = '2' + user.save() + return Response(UserInitSerializer(user).data, status=200) + + +class ChangePasswordView(APIView): + renderer_classes = (JSONRenderer,) + + @staticmethod + def post(request): + if request.user.is_authenticated and not request.user.check_password(request.JSON['old_password']): + return Response("Неверный пароль", status=404) + request.user.set_password(request.JSON['new_password']) + request.user.save() + return Response("Пароль был изменён", status=200) + + +class LoginView(APIView): + renderer_classes = (JSONRenderer,) + + @staticmethod + def post(request): if not request.user.is_authenticated(): user = auth.authenticate(email=request.JSON.get('email'), password=request.JSON.get('password')) - return Response(UserInitSerializer(user).data, status=self.status_code) - return Response(status=403) + try: + auth.login(request, user) + except AttributeError: + return Response("Неверный пароль", status=404) + return Response(UserInitSerializer(request.user).data, status=200) class LogoutView(APIView): renderer_classes = (JSONRenderer,) - status_code = 204 - def get(self, request): - return Response(False, status=self.status_code) \ No newline at end of file + @staticmethod + def post(request): + if request.user.is_authenticated(): + auth.logout(request) + return Response(status=204) \ No newline at end of file From eef99fb5d140c6b1911fc7fa608e1a56d5f47f54 Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 18 Sep 2017 12:59:53 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20api=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B8=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- access/serializers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/access/serializers.py b/access/serializers.py index adc019e..50b9094 100644 --- a/access/serializers.py +++ b/access/serializers.py @@ -6,4 +6,5 @@ class UserInitSerializer(serializers.ModelSerializer): class Meta: model = get_user_model() - fields = ['id', 'email', 'phone', 'name', 'fname', 'oname', 'city', 'd_day'] \ No newline at end of file + fields = ['id', 'email', 'phone', 'name', + 'fname', 'oname', 'city', 'd_day'] \ No newline at end of file From 17d4a45516ac16971167d932a45284f90dafeee5 Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 18 Sep 2017 17:15:17 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- access/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/access/serializers.py b/access/serializers.py index 50b9094..ecf2693 100644 --- a/access/serializers.py +++ b/access/serializers.py @@ -7,4 +7,4 @@ class UserInitSerializer(serializers.ModelSerializer): class Meta: model = get_user_model() fields = ['id', 'email', 'phone', 'name', - 'fname', 'oname', 'city', 'd_day'] \ No newline at end of file + 'fname', 'oname', 'city', 'b_day'] \ No newline at end of file From aa4023ef39ec8b76c5215d62bc070e7e57692205 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 19 Sep 2017 16:09:48 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5?= =?UTF-8?q?=D1=81=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _utils/check_course_journal.py | 89 +++++++++++++++++----------------- courses/new_view.py | 2 +- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/_utils/check_course_journal.py b/_utils/check_course_journal.py index a82cc7b..04c60f2 100644 --- a/_utils/check_course_journal.py +++ b/_utils/check_course_journal.py @@ -2,10 +2,10 @@ import os import django -import sys +import sys import os -from datetime import datetime +from datetime import datetime sys.path.append("/var/www/skillbox") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") @@ -16,48 +16,49 @@ from courses.models import Course from finance.models import Price from journals.models import TeacherJ, check_journal + def check_course_journal(course_id): - print('===========\nКурс: %s\n==============\n' % Course.objects.get(id=course_id).title) - - print('Начало проверки журнала курса') - global_start = start = datetime.now() - course = Course.objects.get(id=course_id) - course.build_map() - finish = datetime.now() - print('Конец проверки журнала курса. Длительность: %s мсек\n' % (finish-start).microseconds) - - print('Начало проверки услуг') - start = datetime.now() - all = Price.objects.filter(by_time=0, post_fire=0, course__id=course_id).count() - print('Количество услуг на проверку: %s' % all) - for i in Price.objects.filter(by_time=0, post_fire=0, course__id=course_id): - i.check_points() - finish = datetime.now() - print('Конец проверки услуг. Длительность: %s мсек\n' % (finish-start).microseconds) - - print('Начало очистки двойных журналов') - start = datetime.now() - os.system('python clean_twice_course_journals.py %s' % course_id) - finish = datetime.now() - print('Конец очистки двойных журналов. Длительность: %s\n' % (finish-start).microseconds) - - print('Начало проверки журналов') - all = TeacherJ.objects.filter(progress__gt=0, course__id=course_id).count() - print('Количество журналов на проверку: %s' % all) - for i in TeacherJ.objects.filter(progress__gt=0, course__id=course_id).order_by('-id'): - check_journal(i, from_console=True) - print('Конец проверки журналов. Длительность: %s сек\n' % (finish-start).microseconds) - - print('Начало открытия уроков курса') - start = datetime.now() - os.system('python open_course_lesson.py %s' % course_id) - finish = datetime.now() - print('Конец открытия уроков курса. Длительность: %s\n' % (finish-start).microseconds) - - global_finish = datetime.now() - print('==============================\nДлительность: %s сек' % (global_finish - global_start).seconds) + print('===========\nКурс: %s\n==============\n' % Course.objects.get(id=course_id).title) -if __name__ == "__main__": - course_id = sys.argv[1] - check_course_journal(course_id) + print('Начало проверки журнала курса') + global_start = start = datetime.now() + course = Course.objects.get(id=course_id) + course.build_map() + finish = datetime.now() + print('Конец проверки журнала курса. Длительность: %s мсек\n' % (finish - start).microseconds) + + print('Начало проверки услуг') + start = datetime.now() + all = Price.objects.filter(by_time=0, post_fire=0, course__id=course_id).count() + print('Количество услуг на проверку: %s' % all) + for i in Price.objects.filter(by_time=0, post_fire=0, course__id=course_id): + i.check_points() + finish = datetime.now() + print('Конец проверки услуг. Длительность: %s мсек\n' % (finish - start).microseconds) + + print('Начало очистки двойных журналов') + start = datetime.now() + os.system('python clean_twice_course_journals.py %s' % course_id) + finish = datetime.now() + print('Конец очистки двойных журналов. Длительность: %s\n' % (finish - start).microseconds) + + print('Начало проверки журналов') + all = TeacherJ.objects.filter(progress__gt=0, course__id=course_id).count() + print('Количество журналов на проверку: %s' % all) + for i in TeacherJ.objects.filter(progress__gt=0, course__id=course_id).order_by('-id'): + check_journal(i, from_console=True) + print('Конец проверки журналов. Длительность: %s сек\n' % (finish - start).microseconds) + print('Начало открытия уроков курса') + start = datetime.now() + os.system('python open_course_lesson.py %s' % course_id) + finish = datetime.now() + print('Конец открытия уроков курса. Длительность: %s\n' % (finish - start).microseconds) + + global_finish = datetime.now() + print('==============================\nДлительность: %s сек' % (global_finish - global_start).seconds) + + +if __name__ == "__main__": + course_id = sys.argv[1] + check_course_journal(course_id) diff --git a/courses/new_view.py b/courses/new_view.py index ba42044..b331557 100644 --- a/courses/new_view.py +++ b/courses/new_view.py @@ -65,7 +65,7 @@ class CourseListView(APIView): if course.public: course_serialize = CourseListSerializer(course).data course_serialize['is_mine'] = False - if Bill.objects.filter(service__course=course, user=request.user, status='F').exists(): + if request.user.is_authenticated() and Bill.objects.filter(service__course=course, user=request.user, status='F').exists(): course_serialize['is_mine'] = True res.append(course_serialize)