Use ref_name to disambiguate serializers that drf-yasg would otherwise assume are the same.

This commit is contained in:
Ned Batchelder
2019-05-24 15:59:18 -04:00
parent 8a44397139
commit 8774ff1f9b
5 changed files with 18 additions and 0 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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'

View File

@@ -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)

View File

@@ -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):