|
|
@ -3,6 +3,7 @@ from rest_framework import serializers |
|
|
from dj_filer.admin import get_thumbs |
|
|
from dj_filer.admin import get_thumbs |
|
|
|
|
|
|
|
|
from apps.course.models import Course, CourseCategory, Attachment, Glossary, LessonCompletion, Participant, Lesson |
|
|
from apps.course.models import Course, CourseCategory, Attachment, Glossary, LessonCompletion, Participant, Lesson |
|
|
|
|
|
from apps.chat.models import RoomMessage |
|
|
from apps.account.serializers import UserProfileSerializer |
|
|
from apps.account.serializers import UserProfileSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -68,6 +69,7 @@ class CourseDetailSerializer(serializers.ModelSerializer): |
|
|
lessons_complated_count = serializers.SerializerMethodField() |
|
|
lessons_complated_count = serializers.SerializerMethodField() |
|
|
lessons_count = serializers.SerializerMethodField() |
|
|
lessons_count = serializers.SerializerMethodField() |
|
|
last_lesson_id = serializers.SerializerMethodField() |
|
|
last_lesson_id = serializers.SerializerMethodField() |
|
|
|
|
|
room_id = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
|
class Meta: |
|
|
class Meta: |
|
|
model = Course |
|
|
model = Course |
|
|
@ -97,9 +99,16 @@ class CourseDetailSerializer(serializers.ModelSerializer): |
|
|
'final_price', |
|
|
'final_price', |
|
|
'timing', |
|
|
'timing', |
|
|
'features', |
|
|
'features', |
|
|
'last_lesson_id' |
|
|
|
|
|
|
|
|
'last_lesson_id', |
|
|
|
|
|
'room_id' |
|
|
] |
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
def get_room_id(self, obj): |
|
|
|
|
|
room_message = RoomMessage.objects.filter(course=obj).first() |
|
|
|
|
|
if room_message: |
|
|
|
|
|
return room_message.id |
|
|
|
|
|
return None |
|
|
|
|
|
|
|
|
def get_last_lesson_id(self, obj): |
|
|
def get_last_lesson_id(self, obj): |
|
|
request = self.context.get('request') |
|
|
request = self.context.get('request') |
|
|
if request and request.user.is_authenticated: |
|
|
if request and request.user.is_authenticated: |
|
|
@ -118,14 +127,13 @@ class CourseDetailSerializer(serializers.ModelSerializer): |
|
|
priority__gt=last_completed_lesson.lesson.priority, |
|
|
priority__gt=last_completed_lesson.lesson.priority, |
|
|
is_active=True |
|
|
is_active=True |
|
|
).order_by('priority').first() |
|
|
).order_by('priority').first() |
|
|
else: |
|
|
|
|
|
# اگر هیچ درسی تکمیل نشده باشد، اولین درس را برگردان |
|
|
|
|
|
next_lesson = Lesson.objects.filter( |
|
|
|
|
|
course=obj, |
|
|
|
|
|
is_active=True |
|
|
|
|
|
).order_by('priority').first() |
|
|
|
|
|
if next_lesson: |
|
|
|
|
|
return next_lesson.id |
|
|
|
|
|
|
|
|
if not next_lesson: |
|
|
|
|
|
next_lesson = Lesson.objects.filter( |
|
|
|
|
|
course=obj, |
|
|
|
|
|
is_active=True |
|
|
|
|
|
).order_by('priority').first() |
|
|
|
|
|
if next_lesson: |
|
|
|
|
|
return next_lesson.id |
|
|
return None |
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|