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.
 
 
 
 
 
 

50 lines
1.7 KiB

from courses.models import Course
class InApiTeacher:
@staticmethod
def add_teacher(slug: str, token: str) -> Course:
course = Course.objects.get(slug=slug)
course.teacher_tokens.append(token)
course.save()
return course
@staticmethod
def delete_teacher(slug: str, token: str) -> None:
course = Course.objects.get(slug=slug)
course.teacher_tokens.remove(token)
course.save()
@staticmethod
def get_token_list(slug: str) -> list:
return Course.objects.get(slug=slug).teacher_tokens
class CourseProgressApi:
@staticmethod
def get_topic_lesson(course_token: str):
course = Course.objects.get(token=course_token)
return [[lesson.token for lesson in topic.lesson_set.all()] for topic in course.topic_set.all()]
@staticmethod
def get_next(course_token: str, lesson_list: list):
"""
:param course_token:
:param lesson_list:
:return: следующий урок для прохождения и требует ли он валидации
"""
course = Course.objects.get(token=course_token)
acc = []
include_lesson = False
reversed_list = course.get_lesson_list()[::-1]
for lesson_idx, lesson in enumerate(reversed_list):
prev_idx = lesson_idx - 1
if include_lesson and not lesson.token in lesson_list:
acc.append((lesson.token, lesson.is_hm))
if lesson.token in lesson_list and not include_lesson:
acc.append((reversed_list[prev_idx].token, reversed_list[prev_idx].is_hm))
include_lesson = True
return acc