From 88b4cdbb529be981ffaa79b8bdb1e4d0c42b032d Mon Sep 17 00:00:00 2001 From: peppelinux Date: Wed, 5 Aug 2020 11:33:58 +0200 Subject: [PATCH] [OpenAPI] Schemas Generator minor improvements, better generalization for third-party integrations Added **kwargs in schema contructors and related callables that initialize it. The goal: have a better generalization for third-party schema generators that would need more arguments in BaseGenerator. __init__ --- rest_framework/schemas/__init__.py | 4 ++-- rest_framework/schemas/generators.py | 7 ++++++- rest_framework/schemas/openapi.py | 3 +-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/rest_framework/schemas/__init__.py b/rest_framework/schemas/__init__.py index b63cb2353..2e3c0fc72 100644 --- a/rest_framework/schemas/__init__.py +++ b/rest_framework/schemas/__init__.py @@ -32,7 +32,7 @@ def get_schema_view( public=False, patterns=None, generator_class=None, authentication_classes=api_settings.DEFAULT_AUTHENTICATION_CLASSES, permission_classes=api_settings.DEFAULT_PERMISSION_CLASSES, - version=None): + version=None, **kwargs): """ Return a schema view. """ @@ -44,7 +44,7 @@ def get_schema_view( generator = generator_class( title=title, url=url, description=description, - urlconf=urlconf, patterns=patterns, version=version + urlconf=urlconf, patterns=patterns, version=version, **kwargs ) # Avoid import cycle on APIView diff --git a/rest_framework/schemas/generators.py b/rest_framework/schemas/generators.py index d3c6446aa..96409193d 100644 --- a/rest_framework/schemas/generators.py +++ b/rest_framework/schemas/generators.py @@ -151,7 +151,9 @@ class BaseSchemaGenerator: # Set by 'SCHEMA_COERCE_PATH_PK'. coerce_path_pk = None - def __init__(self, title=None, url=None, description=None, patterns=None, urlconf=None, version=None): + def __init__(self, title=None, url=None, description=None, + patterns=None, urlconf=None, version=None, **kwargs): + if url and not url.endswith('/'): url += '/' @@ -165,6 +167,9 @@ class BaseSchemaGenerator: self.url = url self.endpoints = None + for k, v in kwargs.items(): + setattr(self, k, v) + def _initialise_endpoints(self): if self.endpoints is None: inspector = self.endpoint_inspector_cls(self.patterns, self.urlconf) diff --git a/rest_framework/schemas/openapi.py b/rest_framework/schemas/openapi.py index 9774a94c7..0009cecba 100644 --- a/rest_framework/schemas/openapi.py +++ b/rest_framework/schemas/openapi.py @@ -113,9 +113,8 @@ class SchemaGenerator(BaseSchemaGenerator): return schema + # View Inspectors - - class AutoSchema(ViewInspector): def __init__(self, tags=None, operation_id_base=None, component_name=None):