From 25d748810c9cd2b764454488f8bee4c6daa79638 Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Mon, 17 Jul 2017 17:28:58 +0300 Subject: [PATCH 1/8] =?UTF-8?q?=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=B5=D0=BA=20=D0=B8=20?= =?UTF-8?q?=D1=83=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 --- management/api.py | 90 ++++++++++++++++++++++++++++++++++++++++++++- management/urls.py | 8 +++- management/views.py | 5 +++ 3 files changed, 101 insertions(+), 2 deletions(-) diff --git a/management/api.py b/management/api.py index 9045c27..b043656 100755 --- a/management/api.py +++ b/management/api.py @@ -7,7 +7,8 @@ from lms.tools import out_date_format, condition_factory, user_fabric from finance.models import Price, Bill, ServiceRequest from management.letters import sent_new_bill, sent_clean_letter, send_burning_course_letter from management.models import News, Feedback, Comment - +from courses.models import Course, CourseTheme +from journals.models import TeacherJ, CourseThemeJ, LessonJ, HomeworkJ @api_decor(without_auth=False, need_keys=['title', 'content', 'to'], method='POST', check_request=True) def self_sent_letter(request, context): @@ -172,3 +173,90 @@ def burning_course(request): send_burning_course_letter(user, course) + +""" + Все функции снизу используются в подобии кабинета для отдела по работе с персоналом. + Если хочешь переписать - перепиши. +""" +@api_decor(without_auth=False) +def find_user(request, context): + try: + user = User.objects.get(id=request.GET['user']) + data = "%s | %s %s" % (user.id, user.name, user.fname) + except User.DoesNotExist: + data = '0' + except ValueError: + data = '0' + + return data + +@api_decor(without_auth=False) +def find_course(request, context): + try: + course = Course.objects.get(id=request.GET['course']) + data = course.title + except Course.DoesNotExist: + data = '0' + except ValueError: + data = '0' + + return data + +@api_decor(without_auth=False) +def open_lessons(request, context): + try: + user = User.objects.get(id=request.GET['user']) + course = Course.objects.get(id=request.GET['course']) + checkbox = True if request.GET.get('homes') == 'on' else False + themes = request.GET['themes'] + except Exception: + return '0' + + try: + teachj, status = TeacherJ.objects.get_or_create(student=user, course=course) + for t in CourseTheme.objects.filter(course=course): + for l in LessonJ.objects.filter(student=user, parent__material=t): + l.success = True + l.save() + if open_homes: + if HomeworkJ.objects.filter(student=user, parent__material=t).exists(): + homej = HomeworkJ.objects.get(student=user, parent__material=t) + homej.success = True + homej.save() + themej, status = CourseThemeJ.objects.get_or_create(student=user, material=t) + themej.success = True + themej.save() + teachj.reload_progress() + except Exception: + return '1' + + return '2' + +@api_decor(without_auth=False) +def open_homes(request, context): + try: + user = User.objects.get(id=request.GET['user']) + course = Course.objects.get(id=request.GET['course']) + except Exception: + return'0' + + try: + for t in CourseTheme.objects.filter(course=course): + if HomeworkJ.objects.filter(student=user, parent__material=t).exists(): + homej = HomeworkJ.objects.get(student=user, parent__material=t) + homej.success = True + homej.save() + except Exception: + return '1' + + return '2' + +@api_decor(without_auth=False) +def change_pass(request, context): + user = User.objects.get(id=request.GET['user']) + password = request.GET.get('pass') + + user.set_password(password) + user.save() + + return '2' diff --git a/management/urls.py b/management/urls.py index dcf5331..eb1b4bd 100755 --- a/management/urls.py +++ b/management/urls.py @@ -36,5 +36,11 @@ urlpatterns = [ url(r'reports_api/get_process_report/$', reports.get_process_report), url(r'reports_api/now_success_hw/$', reports.now_success_hw), url(r'reports_api/now_second_hw/$', reports.now_second_hw), - url(r'self_sent_letter/$', api.self_sent_letter) + url(r'self_sent_letter/$', api.self_sent_letter), + url(r'workcabinet/$', views.render_management_cabinet), + url(r'find_user/$', api.find_user), + url(r'find_course/$', api.find_course), + url(r'open_lessons/$', api.open_lessons), + url(r'open_homes/$', api.open_homes), + url(r'change_pass/$', api.change_pass), ] diff --git a/management/views.py b/management/views.py index 809b658..32ac4c5 100755 --- a/management/views.py +++ b/management/views.py @@ -129,3 +129,8 @@ def progress_report(request): 'journals': []} map.append(c) return {'map': map, 'get_now_success_hw': get_now_success_hw(), 'get_second_success_hw': get_second_success_hw()} + + +@response_decor(template='cabinet.html') +def render_management_cabinet(request): + return {} \ No newline at end of file From 13b94cc6277f076e56344a69866f11f07ed60c96 Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Wed, 19 Jul 2017 18:01:11 +0300 Subject: [PATCH 2/8] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=83=20=D1=81=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BC=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- management/api.py | 37 +++++-- templates/cabinet.html | 222 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 252 insertions(+), 7 deletions(-) create mode 100644 templates/cabinet.html diff --git a/management/api.py b/management/api.py index b043656..1a5cf55 100755 --- a/management/api.py +++ b/management/api.py @@ -208,13 +208,21 @@ def open_lessons(request, context): user = User.objects.get(id=request.GET['user']) course = Course.objects.get(id=request.GET['course']) checkbox = True if request.GET.get('homes') == 'on' else False - themes = request.GET['themes'] + themes = request.GET['themes'].split(' ') + themes.remove('') + for t in themes: + t = int(t) + except Exception: return '0' try: teachj, status = TeacherJ.objects.get_or_create(student=user, course=course) - for t in CourseTheme.objects.filter(course=course): + if themes: + course_themes = CourseTheme.objects.filter(course=course, sort__in=themes) + else: + course_themes = CourseTheme.objects.filter(course=course) + for t in course_themes: for l in LessonJ.objects.filter(student=user, parent__material=t): l.success = True l.save() @@ -237,11 +245,20 @@ def open_homes(request, context): try: user = User.objects.get(id=request.GET['user']) course = Course.objects.get(id=request.GET['course']) + themes = request.GET['themes'].split(' ') + themes.remove('') + for t in themes: + t = int(t) + except Exception: return'0' try: - for t in CourseTheme.objects.filter(course=course): + if themes: + course_themes = CourseTheme.objects.filter(course=course, sort__in=themes) + else: + course_themes = CourseTheme.objects.filter(course=course) + for t in course_themes: if HomeworkJ.objects.filter(student=user, parent__material=t).exists(): homej = HomeworkJ.objects.get(student=user, parent__material=t) homej.success = True @@ -253,10 +270,16 @@ def open_homes(request, context): @api_decor(without_auth=False) def change_pass(request, context): - user = User.objects.get(id=request.GET['user']) - password = request.GET.get('pass') + try: + user = User.objects.get(id=request.GET['user']) + password = request.GET.get('pass') + except Exception: + return '0' - user.set_password(password) - user.save() + try: + user.set_password(password) + user.save() + except Exception: + return '1' return '2' diff --git a/templates/cabinet.html b/templates/cabinet.html new file mode 100644 index 0000000..f0f2dc2 --- /dev/null +++ b/templates/cabinet.html @@ -0,0 +1,222 @@ +{% extends 'base_index.html' %} +{% block title %}Рабочий кабинет{% endblock %} +{% block content %} + + +
+
+
Открыть уроки
+
+
+ Введите id пользователя + +
+
+
+ Введите id курса + +
+
+
+ Открыть домашки + +
+
+ Отдельные темы + +
+
+ +
+
+
+
Открыть домашки
+
+
+ Введите id пользователя + +
+
+
+ Введите id курса + +
+
+
+ Отдельные темы + +
+
+ +
+
+ +
+
+
+
Поменять пароль
+
+
+ Введите id пользователя + +
+
+
+ Введите новый пароль + +
+
+ +
+
+
+ + + +{% endblock %} From 4e71cb108f3f2c0db0bd7c85ed3303158fa0a5fe Mon Sep 17 00:00:00 2001 From: Mikhail Bortnikov Date: Thu, 20 Jul 2017 18:30:19 +0300 Subject: [PATCH 3/8] =?UTF-8?q?=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 6 +++--- management/urls.py | 3 +++ management/views.py | 42 ++++++++++++++++++++++++++++++++++++++++-- templates/cabinet.html | 41 +++++++++++++++++++++++++++++++++++------ 4 files changed, 81 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7e858c2..3664577 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,8 @@ # This file is a template, and might need editing before it works on your project. # Official docker image. -#image: docker:latest -#services: -# - docker:dind +image: docker:latest +services: + - docker:dind variables: CHANNEL: "skillbox" SERVER_URL: "lms.test.spicycms.com" diff --git a/management/urls.py b/management/urls.py index eb1b4bd..3a467c5 100755 --- a/management/urls.py +++ b/management/urls.py @@ -38,9 +38,12 @@ urlpatterns = [ url(r'reports_api/now_second_hw/$', reports.now_second_hw), url(r'self_sent_letter/$', api.self_sent_letter), url(r'workcabinet/$', views.render_management_cabinet), + url(r'diplomscabinet/$', views.render_diplom_cabinet), url(r'find_user/$', api.find_user), url(r'find_course/$', api.find_course), url(r'open_lessons/$', api.open_lessons), url(r'open_homes/$', api.open_homes), url(r'change_pass/$', api.change_pass), + url(r'open_diploms/$', api.open_diploms), + ] diff --git a/management/views.py b/management/views.py index 32ac4c5..5afab30 100755 --- a/management/views.py +++ b/management/views.py @@ -9,7 +9,8 @@ from finance.models import Bill, ServiceRequest, Price from management.models import News, Faq, FaqTitle from courses.models import Course, CourseTheme from management.reports import get_now_success_hw, get_second_success_hw - +from access.models import User +from finance.models import Bill, Price @response_decor(template='super_bill.html') def super_bill(request): @@ -133,4 +134,41 @@ def progress_report(request): @response_decor(template='cabinet.html') def render_management_cabinet(request): - return {} \ No newline at end of file + return {} + + +from .forms import UploadFileForm + +@response_decor(template='diplomscab.html') +def render_diplom_cabinet(request): + context = {} + if request.method == 'POST': + + form = UploadFileForm(request.POST, request.FILES) + print(form) + for l in request.FILES['file'].readlines(): + try: + user = User.objects.get(email=l.rstrip().lower()) + except User.DoesNotExist: + context['error'] = 'Плохая почта %s' % l + + try: + data = form.cleaned_data + id_ = int(data['service_id']) + service = Price.objects.get(id=id_) + bill = Bill.objects.create(user=user, status='F', service=service) + bill.save() + except Exception: + context['error'] = 'Не получилось создать счет для %s' % l + + + context['form'] = form + print(context) + return context + else: + form = UploadFileForm() + + context['form'] = form + print(context) + return context + diff --git a/templates/cabinet.html b/templates/cabinet.html index f0f2dc2..166568d 100644 --- a/templates/cabinet.html +++ b/templates/cabinet.html @@ -2,7 +2,7 @@ {% block title %}Рабочий кабинет{% endblock %} {% block content %}
@@ -110,6 +119,11 @@
+
+ {% for c in courses %} +
{{ c.id }}: {{ c.title }}
+ {% endfor %} +