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