# coding=utf-8 from django.http import Http404 from lms.decors import response_decor from lms.tools import check_role from courses.models import Course from journals.models import HomeworkJ, ExamJ, HomeworkTry, ExamTry @response_decor(template='teach_profile.html') def profile(request): checker = check_role(request.user, 'T') if checker['result']: # Быстрый список активных студентов all_homeworks = [] homeworks = {} exams = {} for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None ).order_by('date'): if journal.parent.get_status_flag() not in ['N', 'F']: title = (journal.material.course.get_title(), journal.material.get_title(), journal.material.id, journal.material.theme.sort, journal.material.get_icon()) if not title in homeworks: homeworks[title] = [] homeworks[title].append(journal) for journal in HomeworkTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None ).order_by('date'): if journal.parent.get_status_flag() not in ['N', 'F']: all_homeworks.append(journal) for journal in ExamTry.objects.filter(teacher=request.user, f_date=None).exclude(success=True, date=None ).order_by('date'): if journal.parent.get_status_flag() not in ['N', 'F']: title = (journal.material.course.get_title(), journal.material.get_title(), journal.material.id) if not title in exams: exams[title] = [] exams[title].append(journal) return { 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), 'active_themes': homeworks, 'active_exams': exams, 'all_homeworks': all_homeworks, } else: return checker @response_decor(template='teacher_homeworks.html') def homeworks(request, course): # Список домашних заданий по курсу на проверку checker = check_role(request.user, 'T') if checker['result']: return {'T': 'H', 'course': Course.objects.get(id=course), 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), 'homeworks': HomeworkTry.objects.filter(teacher=request.user).order_by( '-date') } else: return checker @response_decor(template='teacher_comments.html') def comments(request, course): # Комментари для преподавателя checker = check_role(request.user, 'T') if checker['result']: return {'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id')} else: return checker @response_decor(template='teacher_materials.html') def materials(request, course): # Материалы курсов checker = check_role(request.user, 'T') if checker['result']: return {'T': 'M', 'courses': Course.objects.filter(teachers__in=[request.user]), 'course': Course.objects.get(id=course)} else: return checker @response_decor(template='teacher_exams.html') def exams(request, exam): checker = check_role(request.user, 'T') if checker['result']: return {'T': 'E', 'course': Course.objects.get(id=exam), 'courses': Course.objects.filter(teachers__in=[request.user]).values('title', 'id'), 'exams': ExamTry.objects.filter(teacher=request.user).order_by('-date')} else: return checker @response_decor(template='workshop_homework.html') def homework_workshop(request, homework): if request.user.in_role in ['T', 'S2', 'A']: try: journal = HomeworkJ.objects.get(id=homework) except HomeworkJ.DoesNotExist: raise Http404 else: if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: return { 'homework': journal.get_face(request.user), 'student': journal.student, 'theme': journal.material.theme } else: raise Http404 else: raise Http404 @response_decor(template='workshop_exam.html') def exam_workshop(request, exam): if request.user.in_role in ['T', 'S2', 'A']: try: journal = ExamJ.objects.get(id=exam) except ExamJ.DoesNotExist: raise Http404 else: if not journal.teacher or journal.teacher == request.user or request.user.in_role in ['S2', 'A']: return { 'exam': journal.get_face(request.user), 'student': journal.student, 'theme': journal.material.theme } else: 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