Merge branch 'master' of gitlab.com:skillbox/go.skillbox.ru into hotfix/homework_button

Вмержил мастер для актуальной версии
remotes/origin/pm_task_31703
Mikhail Bortnikov 9 years ago
commit 6183c3b2b6
  1. 2
      _utils/check_course_map.py
  2. 2
      _utils/check_journals.py
  3. 2
      _utils/check_prices.py
  4. 2
      _utils/clean_twice_journals.py
  5. 4
      _utils/open_lesson.py
  6. 78
      courses/views.py
  7. 25
      finance/migrations/0070_auto_20170424_1638.py
  8. 11
      finance/models.py
  9. 5
      finance/tasks.py
  10. 9
      journals/api.py
  11. 2
      management/letters.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

@ -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')

@ -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()

@ -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()

@ -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}

@ -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)

@ -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='Статус'),
),
]

@ -2,6 +2,8 @@
import json
import urllib
import datetime
from simplejson 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()

@ -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()

@ -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'

@ -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
}

Loading…
Cancel
Save