From b38a85f6b4906dc99c3f65bf7cf9862a7c1dd177 Mon Sep 17 00:00:00 2001 From: bigboy Date: Mon, 6 Feb 2017 04:17:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D1=87=D0=B5=D1=82=D1=8B=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8F=D0=BC=20=D0=B8=20=D0=B0=D1=80=D1=85=D0=B8?= =?UTF-8?q?=D0=B2=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=20=D0=BF=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=BF=D0=BE=D0=B4=D0=B0=D0=B2=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _utils/get_reports.py | 48 ++++++++++ _utils/reports/get_learn_balance.py | 34 +++++++ _utils/reports/post_sale.py | 31 ++++++ access/teach_urls.py | 3 +- access/teach_views.py | 10 ++ templates/teach_profile.html | 10 +- templates/teacher_history.html | 144 ++++++++++++++++++++++++++++ 7 files changed, 278 insertions(+), 2 deletions(-) create mode 100644 _utils/get_reports.py create mode 100644 _utils/reports/get_learn_balance.py create mode 100644 _utils/reports/post_sale.py create mode 100644 templates/teacher_history.html diff --git a/_utils/get_reports.py b/_utils/get_reports.py new file mode 100644 index 0000000..931f949 --- /dev/null +++ b/_utils/get_reports.py @@ -0,0 +1,48 @@ +# Получить список файлов папки reports +# Выдать выбор отчета +# Запустить файл +import os +import sys + +BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +REPORTS = '/var/www/projects/codemy/_utils/reports' + + +class CL: + def __init__(self): + print('# Система отчетов') + print('=======================') + print('Дирректория отчетов: {0}'.format(REPORTS)) + self.files = self.get_files_list() + + def get_files_list(self): + # Получение рабочих файлов дирректории + __tmp = [] + for p, dir, files in os.walk(REPORTS): + for f in files: + if f.endswith('.py') and f != '__init__.py': + __tmp.append(os.path.join(p, f)) + return __tmp + + def choise_report(self): + # Выбрать отчет + print('Выберите отчет') + _n = 0 + for _t in self.files: + print('{0}: {1}'.format(_n, _t)) + _n += 1 + _ch = input('Ваш выбор: ') + if _ch == '-': + sys.exit(0) + else: + os.system('python {0}'.format(os.path.join(REPORTS, self.files[int(_ch)]))) + + +def main(): + CL().choise_report() + print('========') + print('Работа закончена. Удачи.') + + +if __name__ == '__main__': + main() diff --git a/_utils/reports/get_learn_balance.py b/_utils/reports/get_learn_balance.py new file mode 100644 index 0000000..1dd40bd --- /dev/null +++ b/_utils/reports/get_learn_balance.py @@ -0,0 +1,34 @@ +# coding=utf-8 +import os +import django +import sys + +sys.path.append("/var/www/projects/codemy/") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") +django.setup() +print('## Отчет по распределению слушателей по курсу') +from courses.models import Course, CourseTheme +from finance.models import Bill +from journals.models import TeacherJ, HomeworkJ, CourseThemeJ + +_courses = Course.objects.filter(public=True).order_by('id') +for _c in _courses: + print('{0}: {1}'.format(_c.id, _c.get_title())) + +_c = input('Выберите курс: ') + +_course = Course.objects.get(id=int(_c)) +print('======') +print('# Курс: {0}'.format(_course.get_title())) +print('Оплеченых счетов: {0}'.format(Bill.objects.filter(service__course=_course, status='F').count())) +_journals = TeacherJ.objects.filter(course=_course, progress__gt=10).exclude(progress=100) +print('Студентов: {0}'.format(_journals.count())) + +print('======') + +# Получить количество ДЗ в статусе прохождения +_homeworks = HomeworkJ.objects.filter(f_date=None, parent__parent__in=_journals).exclude(date=None) +print('ДЗ в статусе прохождения: {0}'.format(_homeworks.count())) + +for i in CourseTheme.objects.filter(course=_course).order_by('sort'): + print('{0}: {2} [{1}]'.format(i.sort, i.get_title(), HomeworkJ.objects.filter(f_date=None, parent__material=i).exclude(date=None).count())) diff --git a/_utils/reports/post_sale.py b/_utils/reports/post_sale.py new file mode 100644 index 0000000..4ee5432 --- /dev/null +++ b/_utils/reports/post_sale.py @@ -0,0 +1,31 @@ +# coding=utf-8 +import os +import django +import sys + +sys.path.append("/var/www/projects/codemy/") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") +django.setup() + +from finance.models import Bill +from django.db.models import Q + +packs = [67, 66, 64, 65, 68, 69] +print('## Скольким пользователям было продано более, чем 1 курс. Исключая пакеты.') +print('Всего оплаченых счетов: {0}'.format(Bill.objects.filter(status='F', user__in_role='U').exclude(Q(service__id__in=packs) | + Q(service__course=None)).count())) + +_u = {} +for _b in Bill.objects.filter(status='F', user__in_role='U').exclude(service__id__in=packs): + if _u.get(_b.user.email): + _u[_b.user.email] += 1 + else: + _u[_b.user.email] = 1 + +_c = 0 + +for k, v in _u.items(): + if v > 1: + _c += 1 + +print('Повторных счетов: {0}'.format(_c)) diff --git a/access/teach_urls.py b/access/teach_urls.py index 1b258b1..39d23d3 100644 --- a/access/teach_urls.py +++ b/access/teach_urls.py @@ -8,5 +8,6 @@ urlpatterns = [ url(r'exams/([0-9]{1,99})$', views.exams), url(r'materials/([0-9]{1,99})$', views.materials), url(r'workshop/homework/([0-9]{1,99})$', views.homework_workshop), - url(r'workshop/exam/([0-9]{1,99})$', views.exam_workshop) + url(r'workshop/exam/([0-9]{1,99})$', views.exam_workshop), + url(r'history/', views.history) ] \ No newline at end of file diff --git a/access/teach_views.py b/access/teach_views.py index fc337f9..059e8ee 100644 --- a/access/teach_views.py +++ b/access/teach_views.py @@ -138,3 +138,13 @@ def exam_workshop(request, exam): raise Http404 else: raise Http404 + + +@response_decor(template='teacher_history.html') +def history(request): + if request.user.in_role in ['T', 'S2', 'A']: + return {'hw': HomeworkJ.objects.filter(teacher=request.user, success=True).exclude(f_date=None), + 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id') + } + else: + raise Http404 diff --git a/templates/teach_profile.html b/templates/teach_profile.html index d93ce36..6bac05f 100644 --- a/templates/teach_profile.html +++ b/templates/teach_profile.html @@ -7,7 +7,6 @@ {% endblock %} {% block asside %} -