From 8774ff1f9b92981d2618d55c5b23857a466b46c3 Mon Sep 17 00:00:00 2001 From: Ned Batchelder <ned@edx.org> Date: Fri, 24 May 2019 15:59:18 -0400 Subject: [PATCH] Use ref_name to disambiguate serializers that drf-yasg would otherwise assume are the same. --- common/djangoapps/course_modes/api/serializers.py | 4 ++++ lms/djangoapps/commerce/api/v1/serializers.py | 6 ++++++ lms/djangoapps/mobile_api/users/serializers.py | 2 ++ openedx/core/djangoapps/enrollments/serializers.py | 4 ++++ openedx/core/djangoapps/user_api/serializers.py | 2 ++ 5 files changed, 18 insertions(+) diff --git a/common/djangoapps/course_modes/api/serializers.py b/common/djangoapps/course_modes/api/serializers.py index 2df0493b792..7c287ac54df 100644 --- a/common/djangoapps/course_modes/api/serializers.py +++ b/common/djangoapps/course_modes/api/serializers.py @@ -28,6 +28,10 @@ class CourseModeSerializer(serializers.Serializer): sku = serializers.CharField(required=False) bulk_sku = serializers.CharField(required=False) + class Meta(object): + # For disambiguating within the drf-yasg swagger schema + ref_name = 'course_modes.CourseMode' + def create(self, validated_data): """ This method must be implemented for use in our diff --git a/lms/djangoapps/commerce/api/v1/serializers.py b/lms/djangoapps/commerce/api/v1/serializers.py index 6c66dfecf36..2eefe854284 100644 --- a/lms/djangoapps/commerce/api/v1/serializers.py +++ b/lms/djangoapps/commerce/api/v1/serializers.py @@ -36,6 +36,8 @@ class CourseModeSerializer(serializers.ModelSerializer): class Meta(object): model = CourseMode fields = ('name', 'currency', 'price', 'sku', 'bulk_sku', 'expires') + # For disambiguating within the drf-yasg swagger schema + ref_name = 'commerce.CourseMode' def validate_course_id(course_id): @@ -77,6 +79,10 @@ class CourseSerializer(serializers.Serializer): verification_deadline = PossiblyUndefinedDateTimeField(format=None, allow_null=True, required=False) modes = CourseModeSerializer(many=True) + class Meta(object): + # For disambiguating within the drf-yasg swagger schema + ref_name = 'commerce.Course' + def validate(self, attrs): """ Ensure the verification deadline occurs AFTER the course mode enrollment deadlines. """ verification_deadline = attrs.get('verification_deadline', None) diff --git a/lms/djangoapps/mobile_api/users/serializers.py b/lms/djangoapps/mobile_api/users/serializers.py index e6814350e0f..da0a7395ed7 100644 --- a/lms/djangoapps/mobile_api/users/serializers.py +++ b/lms/djangoapps/mobile_api/users/serializers.py @@ -147,3 +147,5 @@ class UserSerializer(serializers.ModelSerializer): model = User fields = ('id', 'username', 'email', 'name', 'course_enrollments') lookup_field = 'username' + # For disambiguating within the drf-yasg swagger schema + ref_name = 'mobile_api.User' diff --git a/openedx/core/djangoapps/enrollments/serializers.py b/openedx/core/djangoapps/enrollments/serializers.py index 5e946527f9f..2b7a3a6b551 100644 --- a/openedx/core/djangoapps/enrollments/serializers.py +++ b/openedx/core/djangoapps/enrollments/serializers.py @@ -45,6 +45,10 @@ class CourseSerializer(serializers.Serializer): # pylint: disable=abstract-meth invite_only = serializers.BooleanField(source="invitation_only") course_modes = serializers.SerializerMethodField() + class Meta(object): + # For disambiguating within the drf-yasg swagger schema + ref_name = 'enrollment.Course' + def __init__(self, *args, **kwargs): self.include_expired = kwargs.pop("include_expired", False) super(CourseSerializer, self).__init__(*args, **kwargs) diff --git a/openedx/core/djangoapps/user_api/serializers.py b/openedx/core/djangoapps/user_api/serializers.py index ae515de0ae2..76dcdb7fe59 100644 --- a/openedx/core/djangoapps/user_api/serializers.py +++ b/openedx/core/djangoapps/user_api/serializers.py @@ -34,6 +34,8 @@ class UserSerializer(serializers.HyperlinkedModelSerializer): # This list is the minimal set required by the notification service fields = ("id", "url", "email", "name", "username", "preferences") read_only_fields = ("id", "email", "username") + # For disambiguating within the drf-yasg swagger schema + ref_name = 'user_api.User' class UserPreferenceSerializer(serializers.HyperlinkedModelSerializer): -- GitLab