from functools import wraps
try:
import coreschema
except ImportError:
coreschema = None
from .. import openapi
from ..utils import force_real_str
from .base import FilterInspector, NotHandled, PaginatorInspector
def ignore_assert_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except AssertionError:
return NotHandled
return wrapper
class DrfAPICompatInspector(PaginatorInspector, FilterInspector):
[docs]
def param_to_schema(self, param):
return openapi.Parameter(
name=param["name"],
in_=param["in"],
description=param.get("description"),
required=param.get("required", False),
**param["schema"],
)
[docs]
def get_paginator_parameters(self, paginator):
if hasattr(paginator, "get_schema_operation_parameters"):
return list(
map(
self.param_to_schema,
paginator.get_schema_operation_parameters(self.view),
)
)
return NotHandled
[docs]
def get_filter_parameters(self, filter_backend):
if hasattr(filter_backend, "get_schema_operation_parameters"):
return list(
map(
self.param_to_schema,
filter_backend.get_schema_operation_parameters(self.view),
)
)
if hasattr(filter_backend, "get_filterset_class"):
return self.get_filter_backend_params(filter_backend)
return NotHandled
[docs]
def get_filter_backend_params(self, filter_backend):
filterset_class = filter_backend.get_filterset_class(
self.view,
self.view.queryset,
)
if filterset_class is None:
return NotHandled
return [
openapi.Parameter(
name=field_name,
in_=openapi.IN_QUERY,
required=field.extra.get("required", False),
type=openapi.TYPE_STRING,
description=str(field.label) if field.label else "",
)
for field_name, field in filterset_class.base_filters.items()
]
class CoreAPICompatInspector(PaginatorInspector, FilterInspector):
"""Converts ``core">Fu"n">get("required", False),=DEFAULT_TYPE)lass=">.SCHEMA_DEFINITIONS)
#: whether to output :class:`.Schema` definition">.components)if (
force_real_strDictField)
and source))
rdself, , paginatorref def field_to_swagger_obass="p">(PaginatorInspector, FilterInspector):
&qu
, items=ref
result = use_references, **kwar"viewcode-back" p.process_result(.process_result(.process_result(.process_result(.
``djangorestframework_camel_case``.
# real values set in __init__ to prevent import errors
field_inspectors = [] #:
filter_inspectors = [an class="p">, None) !=+ None
:pn>(.process_result(.JSONField)<>.Items(getattrss="k"ot;Hac=field.extra.get("required", Faltcspan class="c1"># pragma: no cover
nt imppan class="p">("required"serializers.ListSerializerre
import (selfserializers.HiddenField.TYPE_STRINGopenapi.HiddenField, CamelCaseJSONRenderer)
"aoyan>) !=+ None
:pn>(.process_result="n">paramsd"> :pn>(.process_result="n">paramsd"> uot;""Set fields from the ``swagger_schema_fields`` attribute on the Meta clhref="top-down order
if path in ignored_endpoints: path in innen>
]/span> in re
import n clas"clak_aun class="nn">re
import > in ignored_endpoints"kc">True, (
"Can not create schema for RecursiveField on the Metn>IN_QUERY,
pan>, value in fields.items()
if not ()
' type_ie
"Can not create scwagger_schema_fields`` attribute on the Meta clhref="top-down order
if path/span>
return list(
">path/span>
return list(
">path/span>
return list(
">path/span>
t)return list(/span> list(Custom sass="n">path/span>
return list(
">path/span>
)>path/san>result, schema.required]in sys.modules:
© Copyright 2018, Cristi V..