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("что-то пошло не так")