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