You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
5.9 KiB
150 lines
5.9 KiB
# 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
|
|
|