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.
 
 
 
 
 
 

77 lines
3.6 KiB

import os, sys
import django
sys.path.append("../")
os.environ['PG_PORT_5432_TCP_ADDR'] = '127.0.0.1'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from access.models import ActiveObject
from courses.models import Vertex, Lesson, Homework, Exam
from journals.models import TeacherJ, LessonJ, HomeworkJ, ExamJ
from finance.models import Bill
from django.contrib.auth import get_user_model
def get_first(course,):
l = Lesson.objects.filter(course=course).order_by('sort')
hw = Homework.objects.filter(course=course).order_by('sort')
e = Exam.objects.filter(course=course).order_by('sort')
try:
old_id = 'l_' + str(l[0].id) if l.exists() else ('h_' + str(hw[0].id) if hw.exists() else 'e_' + str(e[0].id))
return Vertex.manager.get(old_id=old_id)
except IndexError:
return None
if __name__ == '__main__':
for user in get_user_model().objects.all():
bills = Bill.objects.filter(user=user, status='F')
if bills.exists():
for i in bills:
try:
tj = TeacherJ.objects.get(course=i.service.course, student=user)
if tj.status == 'F':
ActiveObject.objects.create(course=i.service.course, user=user, success=True)
else:
lesson = LessonJ.objects.filter(parent__parent=tj, success=True, student=tj.student)
homework = HomeworkJ.objects.filter(parent__parent=tj, success=True, student=tj.student)
exam = ExamJ.objects.filter(parent__parent=tj, success=True, student=tj.student)
lesson = lesson.order_by('-material__sort', '-parent__material__sort')[0] if lesson.exists() else None
homework = homework.order_by('-material__sort', '-parent__material__sort')[0] if homework.exists() else None
exam = exam.order_by('-material__sort', '-parent__material__sort')[0] if exam.exists() else None
lesson_p = lesson.parent.material.sort if lesson else 0
homework_p = homework.parent.material.sort + 0.5 if homework else 0
exam_p = exam.parent.material.sort + 0.75 if exam else 0
obj = (lesson_p > homework_p and lesson_p > exam_p and 'l_' + str(lesson.material.id)) or \
(homework_p > exam_p and 'h_' + str(homework.material.id)) or \
(exam and 'e_' + str(exam.material.id)) or\
None
if not obj:
active_obj = get_first(i.service.course)
if active_obj:
ActiveObject.objects.create(
course=i.service.course,
user=user,
active_obj=active_obj,
)
else:
vertex = Vertex.manager.get(old_id=obj)
ActiveObject.objects.create(
course=i.service.course,
user=user,
active_obj=vertex.get_next()
)
except TeacherJ.DoesNotExist:
active_obj = get_first(i.service.course)
if active_obj:
ActiveObject.objects.create(
course=i.service.course,
user=user,
active_obj=active_obj,
)