Browse Source

feat(course): enhance professor serializer and logging in PlugNMeet

- Add avatar field to ProfessorListSerializer using FileFieldSerializer for better avatar handling.
- Update room ID generation in CourseLiveSessionRoomCreateAPIView to use a consistent format.
- Introduce debug logging in PlugNMeetClient for room creation payload to aid in troubleshooting.
master
nwhco 7 months ago
parent
commit
689a2af0b0
  1. 4
      apps/course/serializers/professor.py
  2. 1
      apps/course/services/plugnmeet.py
  3. 4
      apps/course/views/live_session.py

4
apps/course/serializers/professor.py

@ -2,6 +2,7 @@ from django.contrib.auth import get_user_model
from rest_framework import serializers
from apps.account.serializers import UserProfileSerializer
from utils import FileFieldSerializer, absolute_url
User = get_user_model()
@ -10,10 +11,11 @@ User = get_user_model()
class ProfessorListSerializer(serializers.ModelSerializer):
course_count = serializers.IntegerField(read_only=True)
lesson_count = serializers.IntegerField(read_only=True)
avatar = FileFieldSerializer(required=False)
class Meta:
model = User
fields = ['id', 'slug', 'fullname', 'experience_years', 'course_count', 'lesson_count']
fields = ['id', 'slug', 'fullname', 'avatar','experience_years', 'course_count', 'lesson_count']
class ProfessorDetailSerializer(UserProfileSerializer):

1
apps/course/services/plugnmeet.py

@ -28,6 +28,7 @@ class PlugNMeetClient:
def create_room(self, payload: Dict[str, Any]) -> Dict[str, Any]:
# Convert entire payload keys to camelCase as required by PlugNMeet protocol
print(f"[PlugNMeet] Creating room with payload: {payload}")
prepared = self._camelize_dict(payload)
return self._post("/auth/room/create", prepared)

4
apps/course/views/live_session.py

@ -41,7 +41,7 @@ class CourseLiveSessionRoomCreateAPIView(GenericAPIView):
logger.info(f"[LiveSession Create] Permission granted for user_id={request.user.id} course={slug}")
subject = serializer.validated_data.get('subject') or f"{course.title} Live Session"
room_id = serializer.validated_data.get('room_id') or self._build_room_id(course)
room_id = self._build_room_id(course)
metadata = self._build_metadata(subject)
payload = {
@ -105,7 +105,7 @@ class CourseLiveSessionRoomCreateAPIView(GenericAPIView):
@staticmethod
def _build_room_id(course: Course) -> str:
return f"{course.id}:imamjavad"
return f"{course.id}-imamjavad"
def _build_metadata(self, subject: str) -> dict:
# Build secured, centralized metadata. Client overrides are NOT allowed.

Loading…
Cancel
Save