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

# 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)