Ejemplo n.º 1
0
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}
Ejemplo n.º 2
0
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}
Ejemplo n.º 3
0
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,
    )
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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]
Ejemplo n.º 6
0
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
    }
Ejemplo n.º 7
0
async def headers(payload=Depends(requires_auth())):
    return {'payload': payload}