diff --git a/apps/course/views/live_session.py b/apps/course/views/live_session.py index 709f4c0..3e8be5e 100644 --- a/apps/course/views/live_session.py +++ b/apps/course/views/live_session.py @@ -51,47 +51,32 @@ class CourseLiveSessionRoomCreateAPIView(GenericAPIView): raise AppAPIException({'message': 'Permission denied'}, status_code=403) # 2. Setup ID and Metadata - room_id = f"room-{course.id}-imamjavad" subject = f"{course.title} Live Session" # 3. Database Logic - Check FIRST before calling PlugNMeet - # Strategy: - # 1. Try to find active session (ended_at is NULL) - # 2. If not found, try to find ended session with same room_id and reactivate it - # 3. If not found, create new session - session = None + session = CourseLiveSession.objects.filter( + course=course, ended_at__isnull=True + ).first() + needs_room_creation = False - try: - # Try to get active session first - session = CourseLiveSession.objects.get( - course=course, room_id=room_id, ended_at__isnull=True - ) - needs_room_creation = False + if session: + room_id = session.room_id logger.info(f"[LiveSession Create] Found active session - session_id={session.id} room_id={room_id}") - except CourseLiveSession.DoesNotExist: - # No active session, check if there's an old one with same room_id - try: - session = CourseLiveSession.objects.get( - course=course, room_id=room_id - ) - # Reactivate the old session and mark for room recreation - session.ended_at = None - session.started_at = timezone.now() - session.subject = subject - session.save(update_fields=['ended_at', 'started_at', 'subject', 'updated_at']) - needs_room_creation = True - logger.info(f"[LiveSession Create] Reactivated ended session - session_id={session.id} room_id={room_id}") - except CourseLiveSession.DoesNotExist: - # No session exists at all, create new one and mark for room creation - session = CourseLiveSession.objects.create( - course=course, - room_id=room_id, - subject=subject, - started_at=timezone.now() - ) - needs_room_creation = True - logger.info(f"[LiveSession Create] Created new session - session_id={session.id} room_id={room_id}") + else: + # No active session, always create a new one with a dynamic room_id + import time + timestamp = int(time.time()) + room_id = f"room-{course.id}-{timestamp}" + + session = CourseLiveSession.objects.create( + course=course, + room_id=room_id, + subject=subject, + started_at=timezone.now() + ) + needs_room_creation = True + logger.info(f"[LiveSession Create] Created new session - session_id={session.id} room_id={room_id}") # 4. Create room in PlugNMeet ONLY if needed if needs_room_creation: @@ -100,7 +85,7 @@ class CourseLiveSessionRoomCreateAPIView(GenericAPIView): client = PlugNMeetClient() plugnmeet_response = client.create_room({ 'room_id': room_id, - 'empty_timeout':90, + 'empty_timeout': 90, 'metadata': metadata, }) logger.info(f"[LiveSession Create] Room created in PlugNMeet - room_id={room_id}")