From faebbaca3030ba4e35c076e07cd86e1d7fa92018 Mon Sep 17 00:00:00 2001 From: mortezaei Date: Mon, 13 Oct 2025 23:30:54 +0330 Subject: [PATCH] fix(course)!: switch online validate route to slug - change URL pattern to use instead of - update view signature and swagger parameter to slug - fetch course by slug to match detail endpoint - ensures consistent API across course endpoints BREAKING CHANGE: the online validate endpoint now uses slug instead of pk; clients must update the path parameter from integer pk to string slug --- apps/course/urls.py | 2 +- apps/course/views/course.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/course/urls.py b/apps/course/urls.py index d789e41..3511ab9 100644 --- a/apps/course/urls.py +++ b/apps/course/urls.py @@ -14,7 +14,7 @@ urlpatterns = [ path('professors//courses/', views.ProfessorCourseListAPIView.as_view(), name='course-professor-course-list'), path('professors//', views.ProfessorDetailAPIView.as_view(), name='course-professor-detail'), path('/online/token/', views.CourseOnlineClassTokenAPIView.as_view(), name='course-online-token'), - path('/online/validate/', views.CourseOnlineClassTokenValidateAPIView.as_view(), name='course-online-validate'), + path('/online/validate/', views.CourseOnlineClassTokenValidateAPIView.as_view(), name='course-online-validate'), path('online/token/validate/', views.CourseOnlineClassTokenValidateAPIView.as_view(), name='course-online-token-validate'), path('/', views.CourseDetailAPIView.as_view(), name='course-detail'), diff --git a/apps/course/views/course.py b/apps/course/views/course.py index 75143b4..23ff3c9 100644 --- a/apps/course/views/course.py +++ b/apps/course/views/course.py @@ -376,9 +376,9 @@ class CourseOnlineClassTokenValidateAPIView(GenericAPIView): operation_description="Get course and user data for authenticated user.", manual_parameters=[ openapi.Parameter( - 'pk', openapi.IN_PATH, - description="Course ID", - type=openapi.TYPE_INTEGER, + 'slug', openapi.IN_PATH, + description="Course Slug", + type=openapi.TYPE_STRING, required=True ) ], @@ -400,10 +400,10 @@ class CourseOnlineClassTokenValidateAPIView(GenericAPIView): ) } ) - def get(self, request, pk, *args, **kwargs): + def get(self, request, slug, *args, **kwargs): detail_view = CourseDetailAPIView() queryset = detail_view.get_queryset() - course = get_object_or_404(queryset, pk=pk) + course = get_object_or_404(queryset, slug=slug) user = request.user course_data = CourseDetailSerializer(course, context={'request': request}).data