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