Fixed assumption of dict ordering

openapi3
Cristi Vîjdea 2017-12-23 12:04:02 +01:00
parent 9f6ee4da87
commit 43034ddc4b
3 changed files with 22 additions and 23 deletions

View File

@ -180,25 +180,25 @@ def get_model_field(queryset, field_name):
return model, model_field return model, model_field
model_field_to_swagger_type = { model_field_to_swagger_type = [
models.AutoField: (openapi.TYPE_INTEGER, None), (models.AutoField, (openapi.TYPE_INTEGER, None)),
models.BinaryField: (openapi.TYPE_STRING, openapi.FORMAT_BINARY), (models.BinaryField, (openapi.TYPE_STRING, openapi.FORMAT_BINARY)),
models.BooleanField: (openapi.TYPE_BOOLEAN, None), (models.BooleanField, (openapi.TYPE_BOOLEAN, None)),
models.NullBooleanField: (openapi.TYPE_BOOLEAN, None), (models.NullBooleanField, (openapi.TYPE_BOOLEAN, None)),
models.DateTimeField: (openapi.TYPE_STRING, openapi.FORMAT_DATETIME), (models.DateTimeField, (openapi.TYPE_STRING, openapi.FORMAT_DATETIME)),
models.DateField: (openapi.TYPE_STRING, openapi.FORMAT_DATE), (models.DateField, (openapi.TYPE_STRING, openapi.FORMAT_DATE)),
models.DecimalField: (openapi.TYPE_NUMBER, None), (models.DecimalField, (openapi.TYPE_NUMBER, None)),
models.DurationField: (openapi.TYPE_INTEGER, None), (models.DurationField, (openapi.TYPE_INTEGER, None)),
models.FloatField: (openapi.TYPE_NUMBER, None), (models.FloatField, (openapi.TYPE_NUMBER, None)),
models.IntegerField: (openapi.TYPE_INTEGER, None), (models.IntegerField, (openapi.TYPE_INTEGER, None)),
models.IPAddressField: (openapi.TYPE_STRING, openapi.FORMAT_IPV4), (models.IPAddressField, (openapi.TYPE_STRING, openapi.FORMAT_IPV4)),
models.GenericIPAddressField: (openapi.TYPE_STRING, openapi.FORMAT_IPV6), (models.GenericIPAddressField, (openapi.TYPE_STRING, openapi.FORMAT_IPV6)),
models.SlugField: (openapi.TYPE_STRING, openapi.FORMAT_SLUG), (models.SlugField, (openapi.TYPE_STRING, openapi.FORMAT_SLUG)),
models.TextField: (openapi.TYPE_STRING, None), (models.TextField, (openapi.TYPE_STRING, None)),
models.TimeField: (openapi.TYPE_STRING, None), (models.TimeField, (openapi.TYPE_STRING, None)),
models.UUIDField: (openapi.TYPE_STRING, openapi.FORMAT_UUID), (models.UUIDField, (openapi.TYPE_STRING, openapi.FORMAT_UUID)),
models.CharField: (openapi.TYPE_STRING, None), (models.CharField, (openapi.TYPE_STRING, None)),
} ]
def inspect_model_field(model, model_field): def inspect_model_field(model, model_field):
@ -210,7 +210,7 @@ def inspect_model_field(model, model_field):
:rtype: OrderedDict :rtype: OrderedDict
""" """
if model is not None and model_field is not None: if model is not None and model_field is not None:
for model_field_class, tf in model_field_to_swagger_type.items(): for model_field_class, tf in model_field_to_swagger_type:
if isinstance(model_field, model_field_class): if isinstance(model_field, model_field_class):
swagger_type, format = tf swagger_type, format = tf
break break
@ -285,7 +285,7 @@ def serializer_field_to_swagger(field, swagger_object_type, definitions=None, **
# JSON roundtrip ensures that the value is valid JSON; # JSON roundtrip ensures that the value is valid JSON;
# for example, sets get transformed into lists # for example, sets get transformed into lists
default = json.loads(json.dumps(default, cls=encoders.JSONEncoder)) default = json.loads(json.dumps(default, cls=encoders.JSONEncoder))
except Exception as e: except Exception:
logger.warning("'default' on schema for %s will not be set because " logger.warning("'default' on schema for %s will not be set because "
"to_representation raised an exception", field, exc_info=True) "to_representation raised an exception", field, exc_info=True)
default = None default = None

View File

@ -49,7 +49,7 @@ class ArticleViewSet(viewsets.ModelViewSet):
pagination_class = ArticlePagination pagination_class = ArticlePagination
filter_backends = (DjangoFilterBackend, OrderingFilter) filter_backends = (DjangoFilterBackend, OrderingFilter)
filter_fields = ('title',) filter_fields = ('title',)
ordering_fields = ('date_modified','date_created') ordering_fields = ('date_modified', 'date_created')
ordering = ('date_created',) ordering = ('date_created',)
@swagger_auto_schema(auto_schema=NoPagingAutoSchema) @swagger_auto_schema(auto_schema=NoPagingAutoSchema)

View File

@ -1,7 +1,6 @@
from django.contrib.auth.models import User from django.contrib.auth.models import User
from rest_framework import serializers from rest_framework import serializers
from articles.models import Article
from snippets.models import Snippet from snippets.models import Snippet