Skip to content

Commit 6b45fb0

Browse files
committed
fixup! Add django decorator
1 parent fea09a4 commit 6b45fb0

File tree

3 files changed

+28
-15
lines changed

3 files changed

+28
-15
lines changed

openapi_core/contrib/django/decorators.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,36 @@
11
"""OpenAPI core contrib django decorators module"""
2+
23
from typing import Type
34

45
from django.conf import settings
56
from django.http.request import HttpRequest
67
from django.http.response import HttpResponse
7-
88
from jsonschema_path import SchemaPath
99

1010
from openapi_core import OpenAPI
11-
from openapi_core.contrib.django.integrations import DjangoIntegration
12-
from openapi_core.contrib.django.requests import DjangoOpenAPIRequest
13-
from openapi_core.contrib.django.responses import DjangoOpenAPIResponse
1411
from openapi_core.contrib.django.handlers import DjangoOpenAPIErrorsHandler
1512
from openapi_core.contrib.django.handlers import (
1613
DjangoOpenAPIValidRequestHandler,
1714
)
15+
from openapi_core.contrib.django.integrations import DjangoIntegration
16+
from openapi_core.contrib.django.requests import DjangoOpenAPIRequest
17+
from openapi_core.contrib.django.responses import DjangoOpenAPIResponse
18+
1819

1920
class DjangoOpenAPIDecorator(DjangoIntegration):
2021
valid_request_handler_cls = DjangoOpenAPIValidRequestHandler
21-
errors_handler_cls: Type[DjangoOpenAPIErrorsHandler] = DjangoOpenAPIErrorsHandler
22+
errors_handler_cls: Type[DjangoOpenAPIErrorsHandler] = (
23+
DjangoOpenAPIErrorsHandler
24+
)
2225

2326
def __init__(
24-
self,
27+
self,
2528
openapi: OpenAPI == None,
2629
request_cls: Type[DjangoOpenAPIRequest] = DjangoOpenAPIRequest,
2730
response_cls: Type[DjangoOpenAPIResponse] = DjangoOpenAPIResponse,
2831
errors_handler_cls: Type[
2932
DjangoOpenAPIErrorsHandler
30-
] = DjangoOpenAPIErrorsHandler
33+
] = DjangoOpenAPIErrorsHandler,
3134
):
3235
if openapi is None:
3336
openapi = get_default_openapi_instance()
@@ -52,18 +55,24 @@ def my_view(request): ...
5255
5356
"""
5457

55-
def _wrapped_view(request: HttpRequest, *args, **kwargs) -> HttpResponse:
58+
def _wrapped_view(
59+
request: HttpRequest, *args, **kwargs
60+
) -> HttpResponse:
5661
# get_response is the function that we treats
5762
# as the "next step" in the chain (i.e., our original view).
5863
def get_response(r: HttpRequest) -> HttpResponse:
5964
return view_func(r, *args, **kwargs)
6065

6166
# Create a handler that will validate the request.
62-
valid_request_handler = self.valid_request_handler_cls(request, get_response)
67+
valid_request_handler = self.valid_request_handler_cls(
68+
request, get_response
69+
)
6370

6471
# Validate the request (before running the view).
6572
errors_handler = self.errors_handler_cls()
66-
response = self.handle_request(request, valid_request_handler, errors_handler)
73+
response = self.handle_request(
74+
request, valid_request_handler, errors_handler
75+
)
6776

6877
# Validate the response (after the view) if should_validate_response() returns True.
6978
return self.handle_response(request, response, errors_handler)
@@ -86,4 +95,4 @@ def from_spec(
8695
request_cls=request_cls,
8796
response_cls=response_cls,
8897
errors_handler_cls=errors_handler_cls,
89-
)
98+
)

openapi_core/contrib/django/providers.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from openapi_core import OpenAPI
99

10+
1011
def get_default_openapi_instance() -> OpenAPI:
1112
"""
1213
Retrieves or initializes the OpenAPI instance based on Django settings
@@ -24,4 +25,6 @@ def get_default_openapi_instance() -> OpenAPI:
2425
)
2526
return OpenAPI(settings.OPENAPI_SPEC)
2627
else:
27-
raise ImproperlyConfigured("Neither OPENAPI nor OPENAPI_SPEC is defined in Django settings.")
28+
raise ImproperlyConfigured(
29+
"Neither OPENAPI nor OPENAPI_SPEC is defined in Django settings."
30+
)
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
from pathlib import Path
22

33
from django.http import HttpResponse
4-
from openapi_core.contrib.django.decorators import DjangoOpenAPIDecorator
54
from jsonschema_path import SchemaPath
65

6+
from openapi_core.contrib.django.decorators import DjangoOpenAPIDecorator
77

88
check_minimal_spec = DjangoOpenAPIDecorator.from_spec(
99
SchemaPath.from_file_path(
1010
Path("tests/integration/data/v3.0/minimal_with_servers.yaml")
1111
)
1212
)
1313

14+
1415
@check_minimal_spec
15-
def get_status(request):
16-
return HttpResponse("OK")
16+
def get_status(request):
17+
return HttpResponse("OK")

0 commit comments

Comments
 (0)