1
1
"""OpenAPI core contrib django decorators module"""
2
+
2
3
from typing import Type
3
4
4
5
from django .conf import settings
5
6
from django .http .request import HttpRequest
6
7
from django .http .response import HttpResponse
7
-
8
8
from jsonschema_path import SchemaPath
9
9
10
10
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
14
11
from openapi_core .contrib .django .handlers import DjangoOpenAPIErrorsHandler
15
12
from openapi_core .contrib .django .handlers import (
16
13
DjangoOpenAPIValidRequestHandler ,
17
14
)
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
+
18
19
19
20
class DjangoOpenAPIDecorator (DjangoIntegration ):
20
21
valid_request_handler_cls = DjangoOpenAPIValidRequestHandler
21
- errors_handler_cls : Type [DjangoOpenAPIErrorsHandler ] = DjangoOpenAPIErrorsHandler
22
+ errors_handler_cls : Type [DjangoOpenAPIErrorsHandler ] = (
23
+ DjangoOpenAPIErrorsHandler
24
+ )
22
25
23
26
def __init__ (
24
- self ,
27
+ self ,
25
28
openapi : OpenAPI == None ,
26
29
request_cls : Type [DjangoOpenAPIRequest ] = DjangoOpenAPIRequest ,
27
30
response_cls : Type [DjangoOpenAPIResponse ] = DjangoOpenAPIResponse ,
28
31
errors_handler_cls : Type [
29
32
DjangoOpenAPIErrorsHandler
30
- ] = DjangoOpenAPIErrorsHandler
33
+ ] = DjangoOpenAPIErrorsHandler ,
31
34
):
32
35
if openapi is None :
33
36
openapi = get_default_openapi_instance ()
@@ -52,18 +55,24 @@ def my_view(request): ...
52
55
53
56
"""
54
57
55
- def _wrapped_view (request : HttpRequest , * args , ** kwargs ) -> HttpResponse :
58
+ def _wrapped_view (
59
+ request : HttpRequest , * args , ** kwargs
60
+ ) -> HttpResponse :
56
61
# get_response is the function that we treats
57
62
# as the "next step" in the chain (i.e., our original view).
58
63
def get_response (r : HttpRequest ) -> HttpResponse :
59
64
return view_func (r , * args , ** kwargs )
60
65
61
66
# 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
+ )
63
70
64
71
# Validate the request (before running the view).
65
72
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
+ )
67
76
68
77
# Validate the response (after the view) if should_validate_response() returns True.
69
78
return self .handle_response (request , response , errors_handler )
@@ -86,4 +95,4 @@ def from_spec(
86
95
request_cls = request_cls ,
87
96
response_cls = response_cls ,
88
97
errors_handler_cls = errors_handler_cls ,
89
- )
98
+ )
0 commit comments