|
|
|
|
@ -108,19 +108,20 @@ class LessonDetail(APIView): |
|
|
|
|
|
|
|
|
|
l = LessonSerializer(lesson).data |
|
|
|
|
|
|
|
|
|
if not lesson.free: |
|
|
|
|
if jwt_token is None: |
|
|
|
|
return Response("Ошибка доступа", status=403) |
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
payload = jwt.decode(jwt_token, settings.COURSE_PROGRESS_SECRET_KEY, algorithms=['HS256']) |
|
|
|
|
payload = None if jwt_token is None\ |
|
|
|
|
else jwt.decode(jwt_token, settings.COURSE_PROGRESS_SECRET_KEY, algorithms=['HS256']) |
|
|
|
|
except DecodeError: |
|
|
|
|
payload = None |
|
|
|
|
|
|
|
|
|
course = lesson.topic.course |
|
|
|
|
|
|
|
|
|
if payload is None: |
|
|
|
|
if not lesson.free: |
|
|
|
|
return Response("Bad token", status=400) |
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
course = Course.objects.get(token=payload['course_token']) |
|
|
|
|
except Course.DoesNotExist: |
|
|
|
|
return Response("Course not found", status=404) |
|
|
|
|
else: |
|
|
|
|
return Response(l, status=200) |
|
|
|
|
|
|
|
|
|
prev_lesson = course.get_previous(lesson, (lambda x: not x.is_hm) if payload['only_watch'] else None) |
|
|
|
|
next_lesson = course.get_next(lesson, (lambda x: not x.is_hm) if payload['only_watch'] else None) |
|
|
|
|
@ -135,9 +136,10 @@ class LessonDetail(APIView): |
|
|
|
|
for payload_lesson in payload['lessons']: |
|
|
|
|
if payload_lesson['lesson_token'] == str(lesson.token): |
|
|
|
|
return Response(l, status=200) |
|
|
|
|
|
|
|
|
|
if not prev_lesson is None and str(prev_lesson.token) == payload_lesson['lesson_token']: |
|
|
|
|
new_lesson = True if prev_lesson is None else \ |
|
|
|
|
((payload_lesson['status'] == "done" or payload_lesson['status'] == "wait") |
|
|
|
|
if prev_lesson.token == payload_lesson['lesson_token'] else False) |
|
|
|
|
(payload_lesson['status'] == "done" or payload_lesson['status'] == "wait") |
|
|
|
|
|
|
|
|
|
if not new_lesson: |
|
|
|
|
return Response("Permission denied", status=403) |
|
|
|
|
|