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.
106 lines
2.9 KiB
106 lines
2.9 KiB
# coding=utf-8
|
|
import os
|
|
|
|
import datetime
|
|
import django
|
|
import sys
|
|
|
|
|
|
sys.path.append("/var/www/projects/lms/")
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
|
|
django.setup()
|
|
from journals.models import TeacherJ, LessonJ, HomeworkJ, ExamJ, CourseThemeJ
|
|
from courses.models import Course, CourseMap
|
|
|
|
|
|
def getMap_journal(_map, student):
|
|
ob = None
|
|
if _map._type == 'L':
|
|
#try:
|
|
ob = LessonJ.objects.get(material=_map.lesson, student=student)
|
|
#except LessonJ.DoesNotExist:
|
|
# print _map.lesson
|
|
# print student.email
|
|
# raise LessonJ.DoesNotExist
|
|
|
|
elif _map._type == 'H':
|
|
#try:
|
|
ob = HomeworkJ.objects.get(material=_map.homework, student=student)
|
|
#except HomeworkJ.DoesNotExist:
|
|
# print _map.lesson
|
|
# print student.email
|
|
# raise HomeworkJ.DoesNotExist
|
|
|
|
elif _map._type == 'E':
|
|
#try:
|
|
ob = ExamJ.objects.get(material=_map.exam, student=student)
|
|
#except ExamJ.DoesNotExist:
|
|
# print _map.lesson
|
|
# print student.email
|
|
# raise ExamJ.DoesNotExist
|
|
|
|
return ob
|
|
|
|
|
|
def rel(j):
|
|
j.date = None
|
|
j.f_date = None
|
|
j.success = False
|
|
j.save()
|
|
|
|
for course in Course.objects.all():
|
|
print course
|
|
for journal in TeacherJ.objects.filter(course=course).order_by('-student__id'):
|
|
for theme in CourseThemeJ.objects.filter(parent=journal):
|
|
#print theme
|
|
theme.date = None
|
|
theme.f_date = None
|
|
theme.success = False
|
|
theme.save()
|
|
|
|
last = None
|
|
_reload = False
|
|
|
|
for _map in CourseMap.objects.filter(course=course).order_by('sort'):
|
|
try:
|
|
j = getMap_journal(_map, journal.student)
|
|
except LessonJ.DoesNotExist:
|
|
pass
|
|
except HomeworkJ.DoesNotExist:
|
|
pass
|
|
except ExamJ.DoesNotExist:
|
|
pass
|
|
else:
|
|
status = j.get_status_flag()
|
|
|
|
if status == 'F' and j.date and j.f_date and j.success and not _reload:
|
|
last = j
|
|
|
|
elif _reload:
|
|
rel(j)
|
|
|
|
elif _map.sort and last:
|
|
if getMap_journal(CourseMap.objects.get(course=course, sort=int(_map.sort)-1), journal.student) == last:
|
|
_reload = True
|
|
s = False
|
|
if not j.date:
|
|
j.date = datetime.datetime.now()
|
|
s = True
|
|
|
|
if j.f_date:
|
|
j.f_date = None
|
|
s = True
|
|
|
|
if j.success:
|
|
j.success = False
|
|
s = True
|
|
|
|
if s:
|
|
j.save()
|
|
|
|
elif _map.sort and not last:
|
|
_reload = True
|
|
rel(j)
|
|
|
|
|
|
|
|
|