async def view_lesson(lesson_id: int, payload=Depends(requires_auth())): lesson = await Lesson.get_or_none(id=lesson_id) or abort(404) _lv, created = await LessonViewed.get_or_create( user_sub=payload['sub'], lesson=lesson, ) return {'created': created}
async def enroll_course(course_id: int, payload=Depends(requires_auth())): c = await (Course.get_or_none(id=course_id)) or e404() _cm, created = await CourseMember.get_or_create( user_sub=payload['sub'], course=c, ) return {'created': created}
async def get_lesson_info(lesson_id: int, payload=Depends(requires_auth())): lesson = await (Lesson.filter( id=lesson_id).prefetch_related('course_part').get_or_none()) or e404() return s.LessonInfo( **lesson.__dict__, course_id=lesson.course_part.course_id, )
async def enrolled_course(id: int, payload=Depends(requires_auth())): # noqa print('start') # check if user is enrolled member = await CourseMember.get_or_none( user_sub=payload['sub'], course_id=id, ) or abort(403) course: Course = await (Course.filter( id=id).prefetch_related('course_parts__lessons').select_related( 'language', 'author').get_or_none()) or e404() for part in course.course_parts: for lesson in part.lessons: lesson.is_viewed = await LessonViewed.get_or_none( lesson=lesson, user_sub=payload['sub'], ).get_or_none() is not None return s.CourseVeryDetailed.from_orm(course)
async def get_enrolled_courses(payload=Depends(requires_auth())): cm = await (CourseMember.filter(user_sub=payload['sub']).select_related( 'course__language', 'course__author')) return [s.Course.from_orm(i.course) for i in cm]
async def is_user_enrolled(course_id: int, payload=Depends(requires_auth())): return { 'is_enrolled': (await CourseMember.get_or_none(course_id=course_id, user_sub=payload['sub'])) is not None }
async def headers(payload=Depends(requires_auth())): return {'payload': payload}