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
2.6 KiB

import datetime
import django
import os
import sys
sys.path.append("../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from progress.models import ProgressLesson, Progress
from courses.models import Course
if __name__ == '__main__':
i = 0
for course in Course.objects.all():
lessons = course.get_lesson_list()
if not lessons:
continue
first_lesson = lessons[0]
for progress in Progress.objects.filter(course_token=course.token):
print(i)
i += 1
progress_lessons = progress.progresslesson_set.all()
if progress_lessons.count() == 0:
ProgressLesson.objects.create(
progress=progress,
lesson_token=first_lesson.token,
checker=progress.teacher if first_lesson.is_hm else progress.user,
)
continue
lesson_find = False
for l in lessons[::-1]:
pl = progress_lessons.filter(lesson_token=l.token)
is_done = pl.exists() and pl[0].status == ProgressLesson.STATUSES.done
if is_done and not lesson_find:
lesson_find = True
next_lesson = course.get_next(l)
if next_lesson is None:
progress.is_finish = True
progress.save()
if not progress_lessons.filter(lesson_token=next_lesson.token,).exists():
ProgressLesson.objects.create(
progress=progress,
lesson_token=next_lesson.token,
checker=progress.teacher if next_lesson.is_hm else progress.user,
)
continue
elif not lesson_find:
continue
elif not pl.exists():
ProgressLesson.objects.create(
progress=progress,
lesson_token=l.token,
checker=progress.teacher if l.is_hm else progress.user,
status=ProgressLesson.STATUSES.done,
finish_date=datetime.datetime.now(),
)
elif not is_done:
omg = pl[0]
omg.status = ProgressLesson.STATUSES.done
omg.finish_date = datetime.datetime.now()
omg.save()
elif is_done:
continue
else:
raise ValueError("что-то пошло не так")