From a4c944864d02e944835eef9f788ecde98f47ea49 Mon Sep 17 00:00:00 2001 From: bigboy Date: Mon, 24 Apr 2017 15:01:57 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D0=9E=D0=B1=D1=80=D0=B0=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=B8=20=D0=BA=20=D0=BD=D0=B5=20=D0=BD=D0=B5=D0=B8=D0=B7?= =?UTF-8?q?=D0=B2=D0=B5=D1=82=D0=BD=D0=BE=D0=BC=D1=83=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D1=83=20=D0=B2=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BF=D0=B8=D1=81=D1=8C=D0=BC=D0=B0,=20=D0=BA?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B9=20=D0=B4=D0=B0=D0=B5=D1=82?= =?UTF-8?q?=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D1=83=20=D0=BD=D0=B0=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=BB=D0=B0=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- management/letters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/management/letters.py b/management/letters.py index 300cb09..379d8e3 100755 --- a/management/letters.py +++ b/management/letters.py @@ -248,7 +248,7 @@ def sent_new_bill(bill): 'SERVICE': bill.get_name(), 'MANAGER': bill.manager.get_full_name(), 'MANAGER_EMAIL': bill.manager.get_email(), - 'FILE': bill.service.course.get_description_file, + 'FILE': None, #TODO: bill.service.course.get_description_file, 'DOMAIN': DOMAIN, 'NAME': NAME } From eb9d82d25af9dbe0e6131af7cfa3bf5e0b7291a2 Mon Sep 17 00:00:00 2001 From: bigboy Date: Mon, 24 Apr 2017 15:24:26 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=9E=D1=82=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BE=D0=BA=20=D1=81=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=D0=BC=D0=B8=20=D0=B2=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D1=80=D0=B6=D0=B8=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finance/models.py | 11 +++++++++-- finance/tasks.py | 5 ++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/finance/models.py b/finance/models.py index 32dfaeb..344cf05 100755 --- a/finance/models.py +++ b/finance/models.py @@ -2,6 +2,8 @@ import json import urllib import datetime +from json import JSONDecodeError + from django.db import models import django.utils.timezone from access.models import User, TrafHistory @@ -304,6 +306,7 @@ class Bill(models.Model): class ServiceRequest(models.Model): SERVICE_REQUEST_STATUS = ( ('S', u'Не обработан'), + ('E', u'Ошибка контекста'), ('W', u'В работе'), ('F', u'Продан'), ('B', u'Не продал') @@ -367,7 +370,11 @@ class ServiceRequest(models.Model): def sent_to_amo(self): if self.data: - data = json.loads(self.data.replace("'", "\"")) + try: + data = json.loads(self.data.replace("'", "\"")) + except JSONDecodeError: + self.status = "E" + else: name = '' phone = '' @@ -399,7 +406,7 @@ class ServiceRequest(models.Model): data['name'] = 'empty' urllib.request.urlopen(out_uri('https://skill-box.ru/amocrm/CreateLead.php', data)) - if not self.send: + if not self.send and self.status != 'E': data['host'] = self.host self.send = True self.save() diff --git a/finance/tasks.py b/finance/tasks.py index b331b34..bc1ace7 100755 --- a/finance/tasks.py +++ b/finance/tasks.py @@ -1,6 +1,9 @@ # coding=utf-8 from celery.task import periodic_task from datetime import timedelta, datetime + +from django.db.models import Q + from finance.models import Price, Bill, ServiceRequest from courses.models import CourseMap @@ -32,6 +35,6 @@ def price_map_migrator(): @periodic_task(run_every=timedelta(minutes=1)) def sent_service_request_to_amo(): - sr = ServiceRequest.objects.filter(send=False, send_date__lt=datetime.now()).exclude(name='TEST').first() + sr = ServiceRequest.objects.filter(send=False, send_date__lt=datetime.now()).exclude(Q(name='TEST')| Q(status='E')).first() if sr: sr.sent_to_amo() From b37da92a35c37282ef35245ec9b326eceb8e3a7d Mon Sep 17 00:00:00 2001 From: bigboy Date: Mon, 24 Apr 2017 16:39:32 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=9C=D0=B8=D0=B3=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=BE=D0=BD=D0=BD=D1=8B=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finance/migrations/0070_auto_20170424_1638.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 finance/migrations/0070_auto_20170424_1638.py diff --git a/finance/migrations/0070_auto_20170424_1638.py b/finance/migrations/0070_auto_20170424_1638.py new file mode 100644 index 0000000..d966970 --- /dev/null +++ b/finance/migrations/0070_auto_20170424_1638.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.3 on 2017-04-24 16:38 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0069_auto_20170203_1333'), + ] + + operations = [ + migrations.AlterField( + model_name='bill', + name='_method', + field=models.CharField(choices=[('C', 'Наличные'), ('H', 'JustClick'), ('B', 'Банковский перевод'), ('G', 'На расчетный счет'), ('A', 'Альфа-Банк'), ('P', 'PayPal'), ('W', 'WebMoney'), ('S', 'SimplePay'), ('Y', 'YandexKassa')], default='Y', max_length=2, verbose_name='Способ оплаты'), + ), + migrations.AlterField( + model_name='servicerequest', + name='status', + field=models.CharField(choices=[('S', 'Не обработан'), ('E', 'Ошибка контекста'), ('W', 'В работе'), ('F', 'Продан'), ('B', 'Не продал')], default='S', max_length=1, verbose_name='Статус'), + ), + ] From b5d2aa6848be0e56f5847b499fd687a776065403 Mon Sep 17 00:00:00 2001 From: bigboy Date: Mon, 24 Apr 2017 17:03:22 +0300 Subject: [PATCH 4/6] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finance/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/finance/models.py b/finance/models.py index 344cf05..95aa2b5 100755 --- a/finance/models.py +++ b/finance/models.py @@ -2,7 +2,7 @@ import json import urllib import datetime -from json import JSONDecodeError +from simplejson import JSONDecodeError from django.db import models import django.utils.timezone From 44323fac19455dec4441cbcb4c25126584369cbd Mon Sep 17 00:00:00 2001 From: bigboy Date: Mon, 24 Apr 2017 17:31:06 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D0=A1=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D1=8B?= =?UTF-8?q?=20=D0=BE=D0=B1=D1=89=D0=B5=D0=B9=20=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _utils/check_course_map.py | 2 +- _utils/check_journals.py | 2 +- _utils/check_prices.py | 2 +- _utils/clean_twice_journals.py | 2 +- _utils/open_lesson.py | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_utils/check_course_map.py b/_utils/check_course_map.py index 1242297..5a8eba3 100644 --- a/_utils/check_course_map.py +++ b/_utils/check_course_map.py @@ -4,7 +4,7 @@ import os import datetime import django import sys -sys.path.append("/var/www/projects/codemy/") +sys.path.append("/var/www/skillbox/") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() from courses.models import Course diff --git a/_utils/check_journals.py b/_utils/check_journals.py index ca31d2e..93b0d88 100644 --- a/_utils/check_journals.py +++ b/_utils/check_journals.py @@ -5,7 +5,7 @@ import sys import datetime import os start = datetime.datetime.now() -sys.path.append("/var/www/projects/codemy/") +sys.path.append("/var/www/skillbox/") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() os.system('python check_course_map.py') diff --git a/_utils/check_prices.py b/_utils/check_prices.py index 1b4be07..a80718b 100644 --- a/_utils/check_prices.py +++ b/_utils/check_prices.py @@ -6,7 +6,7 @@ import datetime start = datetime.datetime.now() -sys.path.append("/var/www/projects/codemy/") +sys.path.append("/var/www/skillbox/") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() diff --git a/_utils/clean_twice_journals.py b/_utils/clean_twice_journals.py index 89a7398..8aa8df5 100644 --- a/_utils/clean_twice_journals.py +++ b/_utils/clean_twice_journals.py @@ -5,7 +5,7 @@ import sys import datetime start = datetime.datetime.now() -sys.path.append("/var/www/projects/codemy/") +sys.path.append("/var/www/skillbox/") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() diff --git a/_utils/open_lesson.py b/_utils/open_lesson.py index 9555a67..636913e 100644 --- a/_utils/open_lesson.py +++ b/_utils/open_lesson.py @@ -4,14 +4,14 @@ import django import sys import datetime -sys.path.append("/var/www/projects/codemy/") +sys.path.append("/var/www/skillbox/") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() from journals.models import CourseMap, LessonJ, TeacherJ, HomeworkTry from lms.tools import show_progress -_NEED_OPEN = LessonJ.objects.get(material__id='1154', student__email='parabellum07@gmail.com'.lower()) +_NEED_OPEN = None#LessonJ.objects.get(material__id='1154', student__email='parabellum07@gmail.com'.lower()) _TEACHERJ_FILTER = {'progress__gte': 0} _TEACHERJ_EXCLUDE = {'teacher': None} From 3126dbb68ea8d756f22f031ee1778fda4f1cfba6 Mon Sep 17 00:00:00 2001 From: bigboy Date: Tue, 25 Apr 2017 00:45:14 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20=D0=BC=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D0=B0=D0=BB=D0=B0=20=D0=B8=D0=B7=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B9=D0=B4=D0=B5=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- courses/views.py | 78 ++++++------------------------------------------ journals/api.py | 9 +----- 2 files changed, 10 insertions(+), 77 deletions(-) diff --git a/courses/views.py b/courses/views.py index 20dfc7a..19494fa 100755 --- a/courses/views.py +++ b/courses/views.py @@ -55,21 +55,7 @@ def course(request, slug): journal.start_date = datetime.datetime.now() journal.save() - waiting_materials = [] - if journal.waiting.exists(): - for n in journal.waiting.all(): - _obj = n.get_obj() - __type = n.get_type() - _type = None - if __type == 'L': - _type = 'lesson' - elif __type == 'H': - _type = 'homework' - elif __type == 'E': - _type = 'exam' - - waiting_materials.append({'obj': _obj, 'type': _type}) - return {'course': journal.get_face(user_fabric(request.user)), 'user': user_fabric(request.user), 'waiting_materials': waiting_materials} + return {'course': journal.get_face(user_fabric(request.user)), 'user': user_fabric(request.user)} @response_decor(template='lesson.html') @@ -86,27 +72,12 @@ def lesson(request, lesson): check_journal(j) lj = LessonJ.objects.get(material=lesson, student=request.user) - waiting_materials = [] - if lj.parent.parent.waiting.exists(): - for n in lj.parent.parent.waiting.all(): - _obj = n.get_obj() - __type = n.get_type() - _type = None - if __type == 'L': - _type = 'lesson' - elif __type == 'H': - _type = 'homework' - elif __type == 'E': - _type = 'exam' - - waiting_materials.append({'obj': _obj, 'type': _type}) - if request.user.is_authenticated() and request.user.is_admin or request.user in lesson.course.teachers.all(): return {'lesson': lj.get_face(user_fabric(request.user)), 'course': {'head': lj.parent.parent.get_head_face(), 'level': lj.parent.parent.course.get_level(), 'journal': lj.parent.parent.get_face(user_fabric(request.user))}, - 'bought': True, 'accept': True, 'waiting_materials': waiting_materials} + 'bought': True, 'accept': True} if not lesson.free and not system_check_bill(lesson.token, request.user, theme_type=lesson.theme._type): return {'redirect': '/access/by_error/'} @@ -122,7 +93,7 @@ def lesson(request, lesson): lj.date = datetime.datetime.now() lj.save() if result: - return {'lesson': lj.get_face(user_fabric(request.user)), 'course': {'head': lj.parent.parent.get_head_face(), 'level': lj.parent.parent.course.get_level(), 'journal': lj.parent.parent.get_face(user_fabric(request.user))}, 'bought': True, 'accept': True, 'waiting_materials': waiting_materials} + return {'lesson': lj.get_face(user_fabric(request.user)), 'course': {'head': lj.parent.parent.get_head_face(), 'level': lj.parent.parent.course.get_level(), 'journal': lj.parent.parent.get_face(user_fabric(request.user))}, 'bought': True, 'accept': True} @response_decor(template='homework.html') @@ -138,27 +109,12 @@ def homework(request, homework): check_journal(j) hj = HomeworkJ.objects.get(material=Homework.objects.get(id=homework), student=request.user) - waiting_materials = [] - if hj.parent.parent.waiting.exists(): - for n in hj.parent.parent.waiting.all(): - _obj = n.get_obj() - __type = n.get_type() - _type = None - if __type == 'L': - _type = 'lesson' - elif __type == 'H': - _type = 'homework' - elif __type == 'E': - _type = 'exam' - - waiting_materials.append({'obj': _obj, 'type': _type}) - if request.user.is_authenticated() and request.user.is_admin: return {'homework': hj.get_face(user_fabric(request.user)), 'course': {'head': hj.parent.parent.get_head_face(), 'level': hj.parent.parent.course.get_level(), - 'journal': hj.parent.parent.get_face(user_fabric(request.user))}, - 'waiting_materials': waiting_materials} + 'journal': hj.parent.parent.get_face(user_fabric(request.user))} + } if not system_check_bill(hj.material.token, request.user, theme_type=hj.material.theme._type): return {'redirect': '/access/by_error/'} @@ -177,8 +133,7 @@ def homework(request, homework): if result: return {'homework': hj.get_face(user_fabric(request.user)), 'course': {'head': hj.parent.parent.get_head_face(), - 'level': hj.parent.parent.course.get_level(), 'journal': hj.parent.parent.get_face(user_fabric(request.user))}, - 'waiting_materials': waiting_materials} + 'level': hj.parent.parent.course.get_level(), 'journal': hj.parent.parent.get_face(user_fabric(request.user))},} @response_decor(template='exam.html') @@ -194,25 +149,10 @@ def exam(request, exam): check_journal(j) exam = ExamJ.objects.get(material=Exam.objects.get(id=exam), student=request.user) - waiting_materials = [] - if exam.parent.parent.waiting.all().exists(): - for n in exam.parent.parent.waiting.all(): - _obj = n.get_obj() - __type = n.get_type() - _type = None - if __type == 'L': - _type = 'lesson' - elif __type == 'H': - _type = 'homework' - elif __type == 'E': - _type = 'exam' - - waiting_materials.append({'obj': _obj, 'type': _type}) - if request.user.is_authenticated() and request.user.is_admin: return {'exam': exam.get_face(user_fabric(request.user)), - 'course': {'head': exam.parent.parent.get_head_face(), 'level': exam.parent.parent.course.get_level()}, - 'waiting_materials': waiting_materials} + 'course': {'head': exam.parent.parent.get_head_face(), 'level': exam.parent.parent.course.get_level()} + } if not system_check_bill(exam.material.token, request.user): return {'redirect': '/access/by_error/'} @@ -229,7 +169,7 @@ def exam(request, exam): exam.save() if result: - return {'exam': exam.get_face(user_fabric(request.user)), 'course': {'head': exam.parent.parent.get_head_face(), 'level': exam.parent.parent.course.get_level()}, 'waiting_materials': waiting_materials} + return {'exam': exam.get_face(user_fabric(request.user)), 'course': {'head': exam.parent.parent.get_head_face(), 'level': exam.parent.parent.course.get_level()}} @response_decor(template='all_achievements.html', without_auth=True) diff --git a/journals/api.py b/journals/api.py index 0dbc18f..78eef8c 100755 --- a/journals/api.py +++ b/journals/api.py @@ -102,14 +102,7 @@ def check_jaccess(request, context): if request.user in journal[0].material.course.teachers.all(): context['code'] = '1' return context - w = journal.first().parent.parent.waiting - if w.exists(): - if w.first().token != journal.first().material.token: - if w.first().token > journal.first().material.token: - context['code'] = '1' - return context - context['code'] = '0' - return context + _before = journal.first().get_before() if journal.first().get_status_flag() != 'N': context['code'] = '1'