Fix security definitions ordering consistency
parent
5418415300
commit
a9ec14620c
|
|
@ -16,7 +16,7 @@ from . import openapi
|
|||
from .app_settings import swagger_settings
|
||||
from .errors import SwaggerGenerationError
|
||||
from .inspectors.field import get_basic_type_info, get_queryset_field, get_queryset_from_view
|
||||
from .openapi import ReferenceResolver
|
||||
from .openapi import ReferenceResolver, SwaggerDict
|
||||
from .utils import force_real_str, get_consumes, get_produces
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
|
@ -216,14 +216,14 @@ class OpenAPISchemaGenerator(object):
|
|||
|
||||
security_definitions = swagger_settings.SECURITY_DEFINITIONS
|
||||
if security_definitions is not None:
|
||||
security_definitions = OrderedDict(sorted([(key, OrderedDict(sorted(sd.items())))
|
||||
for key, sd in swagger_settings.SECURITY_DEFINITIONS.items()]))
|
||||
security_definitions = SwaggerDict._as_odict(security_definitions, {})
|
||||
|
||||
security_requirements = swagger_settings.SECURITY_REQUIREMENTS
|
||||
if security_requirements is None:
|
||||
security_requirements = [{security_scheme: []} for security_scheme in swagger_settings.SECURITY_DEFINITIONS]
|
||||
|
||||
security_requirements = sorted(security_requirements, key=lambda od: list(sorted(od)))
|
||||
security_requirements = [OrderedDict(sorted(sr.items())) for sr in security_requirements]
|
||||
security_requirements = [SwaggerDict._as_odict(sr, {}) for sr in security_requirements]
|
||||
security_requirements = sorted(security_requirements, key=list)
|
||||
|
||||
url = self.url
|
||||
if url is None and request is not None:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import six
|
|||
import collections
|
||||
import logging
|
||||
import re
|
||||
import sys
|
||||
from collections import OrderedDict
|
||||
|
||||
from coreapi.compat import urlparse
|
||||
|
|
@ -139,7 +140,10 @@ class SwaggerDict(OrderedDict):
|
|||
if isinstance(obj, collections.Mapping):
|
||||
result = OrderedDict()
|
||||
memo[id(obj)] = result
|
||||
for attr, val in obj.items():
|
||||
items = obj.items()
|
||||
if not isinstance(obj, OrderedDict):
|
||||
items = sorted(items)
|
||||
for attr, val in items:
|
||||
result[attr] = SwaggerDict._as_odict(val, memo)
|
||||
return result
|
||||
elif isinstance(obj, six.string_types):
|
||||
|
|
|
|||
Loading…
Reference in New Issue