diff --git a/management/api.py b/management/api.py index 9045c27..f656f13 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,115 @@ 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'].split(' ') + if '' in themes: + 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) + 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() + 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']) + themes = request.GET['themes'].split(' ') + if '' in themes: + themes.remove('') + for t in themes: + t = int(t) + + except Exception: + return'0' + + try: + 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 + homej.save() + except Exception: + return '1' + + return '2' + +@api_decor(without_auth=False) +def change_pass(request, context): + try: + user = User.objects.get(id=request.GET['user']) + password = request.GET.get('pass') + except Exception: + return '0' + + try: + user.set_password(password) + user.save() + except Exception: + return '1' + + return '2' diff --git a/management/forms.py b/management/forms.py new file mode 100644 index 0000000..2556a04 --- /dev/null +++ b/management/forms.py @@ -0,0 +1,5 @@ +from django import forms + +class UploadFileForm(forms.Form): + service_id = forms.CharField(max_length=50, label=u'id услуги') + file = forms.FileField() \ No newline at end of file diff --git a/management/urls.py b/management/urls.py index dcf5331..c6b6a89 100755 --- a/management/urls.py +++ b/management/urls.py @@ -36,5 +36,12 @@ 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'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), ] diff --git a/management/views.py b/management/views.py index 809b658..dee6ed0 100755 --- a/management/views.py +++ b/management/views.py @@ -9,7 +9,9 @@ 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 +from .forms import UploadFileForm @response_decor(template='super_bill.html') def super_bill(request): @@ -129,3 +131,46 @@ 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): + if request.user.in_role != 'A': + raise Http404 + else: + courses = Course.objects.filter(hidden=False).order_by('id') + return {'courses': courses} + + + + +@response_decor(template='diplomscab.html') +def render_diplom_cabinet(request): + context = {} + if request.method == 'POST': + + form = UploadFileForm(request.POST, request.FILES) + 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 + return context + else: + form = UploadFileForm() + + context['form'] = form + return context + diff --git a/templates/cabinet.html b/templates/cabinet.html new file mode 100644 index 0000000..fde991d --- /dev/null +++ b/templates/cabinet.html @@ -0,0 +1,238 @@ +{% extends 'base_index.html' %} +{% block title %}Рабочий кабинет{% endblock %} +{% block content %} + + +
+
+
Открыть уроки
+
+
+ Введите id пользователя + +
+
+
+ Введите id курса + +
+
+
+ Открыть домашки + +
+
+ Отдельные темы + +
+
+ +
+
+
+
Открыть домашки
+
+
+ Введите id пользователя + +
+
+
+ Введите id курса + +
+
+
+ Отдельные темы + +
+
+ +
+
+
+
Поменять пароль
+
+
+ Введите id пользователя + +
+
+
+ Введите новый пароль + +
+
+ +
+
+
+
+ {% for c in courses %} +
{{ c.id }}: {{ c.title }}
+ {% endfor %} +
+ + + +{% endblock %} diff --git a/templates/diplomscab.html b/templates/diplomscab.html new file mode 100644 index 0000000..6ac3d33 --- /dev/null +++ b/templates/diplomscab.html @@ -0,0 +1,14 @@ +{% extends 'base_index.html' %} +{% block title %}Рабочий кабинет{% endblock %} +{% block content %} +
Массовое открытие дипломов
+
+ {% csrf_token %} + + {{form.as_table}} +
+
{{ ERROR }}
+ +
+ +{% endblock %} \ No newline at end of file