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

# 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