Skip to content

Commit bc77286

Browse files
committed
Merge PR #221 into 14.0
Signed-off-by lmignon
2 parents b9db65e + 8787eaa commit bc77286

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2227
-1097
lines changed

base_rest/apispec/rest_method_param_plugin.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,14 @@ def _generate_pamareters(self, routing, method, params):
4848
if method == "get":
4949
# get quey params from RequestMethodParam object
5050
parameters.extend(
51-
input_param.to_openapi_query_parameters(self._service)
51+
input_param.to_openapi_query_parameters(self._service, self.spec)
5252
)
5353
else:
5454
# get requestBody from RequestMethodParam object
5555
request_body = params.get("requestBody", {})
56-
request_body.update(input_param.to_openapi_requestbody(self._service))
56+
request_body.update(
57+
input_param.to_openapi_requestbody(self._service, self.spec)
58+
)
5759
params["requestBody"] = request_body
5860
# sort paramters to ease comparison into unittests
5961
parameters.sort(key=lambda a: a["name"])
@@ -68,5 +70,7 @@ def _generate_responses(self, routing, method, params):
6870
responses = params.get("responses", {})
6971
# get response from RequestMethodParam object
7072
responses.update(self._default_responses.copy())
71-
responses.update(output_param.to_openapi_responses(self._service))
73+
responses.update(
74+
output_param.to_openapi_responses(self._service, self.spec)
75+
)
7276
return responses

base_rest/restapi.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,13 @@ def to_response(self, service, result):
131131
:return: http.Response or JSON dict
132132
"""
133133

134-
def to_openapi_query_parameters(self, service):
134+
def to_openapi_query_parameters(self, service, spec):
135135
return {}
136136

137-
def to_openapi_requestbody(self, service):
137+
def to_openapi_requestbody(self, service, spec):
138138
return {}
139139

140-
def to_openapi_responses(self, service):
140+
def to_openapi_responses(self, service, spec):
141141
return {}
142142

143143

@@ -161,10 +161,10 @@ def _binary_content_schema(self):
161161
for mediatype in self._mediatypes
162162
}
163163

164-
def to_openapi_requestbody(self, service):
164+
def to_openapi_requestbody(self, services, spec):
165165
return {"content": self._binary_content_schema}
166166

167-
def to_openapi_responses(self, service):
167+
def to_openapi_responses(self, service, spec):
168168
return {"200": {"content": self._binary_content_schema}}
169169

170170
def to_response(self, service, result):
@@ -209,7 +209,7 @@ def to_response(self, service, result):
209209
return validator.document
210210
raise SystemError(_("Invalid Response %s") % validator.errors)
211211

212-
def to_openapi_query_parameters(self, service):
212+
def to_openapi_query_parameters(self, service, spec):
213213
json_schema = self.to_json_schema(service, "input")
214214
parameters = []
215215
for prop, spec in list(json_schema["properties"].items()):
@@ -238,11 +238,11 @@ def to_openapi_query_parameters(self, service):
238238

239239
return parameters
240240

241-
def to_openapi_requestbody(self, service):
241+
def to_openapi_requestbody(self, service, spec):
242242
json_schema = self.to_json_schema(service, "input")
243243
return {"content": {"application/json": {"schema": json_schema}}}
244244

245-
def to_openapi_responses(self, service):
245+
def to_openapi_responses(self, service, spec):
246246
json_schema = self.to_json_schema(service, "output")
247247
return {"200": {"content": {"application/json": {"schema": json_schema}}}}
248248

@@ -293,7 +293,7 @@ def from_params(self, service, params):
293293
def to_response(self, service, result):
294294
return self._do_validate(service, data=result, direction="output")
295295

296-
def to_openapi_query_parameters(self, service):
296+
def to_openapi_query_parameters(self, service, spec):
297297
raise NotImplementedError("List are not (?yet?) supported as query paramters")
298298

299299
def _do_validate(self, service, data, direction):

base_rest/tests/test_cerberus_list_validator.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def setUpClass(cls):
4848
cls.maxDiff = None
4949

5050
def test_to_openapi_responses(self):
51-
res = self.simple_schema_list_validator.to_openapi_responses(None)
51+
res = self.simple_schema_list_validator.to_openapi_responses(None, None)
5252
self.assertDictEqual(
5353
res,
5454
{
@@ -78,7 +78,7 @@ def test_to_openapi_responses(self):
7878
}
7979
},
8080
)
81-
res = self.nested_schema_list_validator.to_openapi_responses(None)
81+
res = self.nested_schema_list_validator.to_openapi_responses(None, None)
8282
self.assertDictEqual(
8383
res,
8484
{
@@ -113,7 +113,7 @@ def test_to_openapi_responses(self):
113113
)
114114

115115
def test_to_openapi_requestbody(self):
116-
res = self.simple_schema_list_validator.to_openapi_requestbody(None)
116+
res = self.simple_schema_list_validator.to_openapi_requestbody(None, None)
117117
self.assertEqual(
118118
res,
119119
{
@@ -141,7 +141,7 @@ def test_to_openapi_requestbody(self):
141141
}
142142
},
143143
)
144-
res = self.nested_schema_list_validator.to_openapi_requestbody(None)
144+
res = self.nested_schema_list_validator.to_openapi_requestbody(None, None)
145145
self.assertDictEqual(
146146
res,
147147
{
@@ -175,7 +175,7 @@ def test_to_openapi_requestbody(self):
175175

176176
def test_to_openapi_query_parameters(self):
177177
with self.assertRaises(NotImplementedError):
178-
self.simple_schema_list_validator.to_openapi_query_parameters(None)
178+
self.simple_schema_list_validator.to_openapi_query_parameters(None, None)
179179

180180
def test_from_params_ignore_unknown(self):
181181
params = [{"name": "test", "unknown": True}]

base_rest/tests/test_cerberus_validator.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def setUpClass(cls):
5151
)
5252

5353
def test_to_openapi_responses(self):
54-
res = self.simple_schema_cerberus_validator.to_openapi_responses(None)
54+
res = self.simple_schema_cerberus_validator.to_openapi_responses(None, None)
5555
self.assertDictEqual(
5656
res,
5757
{
@@ -80,7 +80,7 @@ def test_to_openapi_responses(self):
8080
}
8181
},
8282
)
83-
res = self.nested_schema_cerberus_validator.to_openapi_responses(None)
83+
res = self.nested_schema_cerberus_validator.to_openapi_responses(None, None)
8484
self.assertDictEqual(
8585
res,
8686
{
@@ -113,7 +113,7 @@ def test_to_openapi_responses(self):
113113
)
114114

115115
def test_to_openapi_requestbody(self):
116-
res = self.simple_schema_cerberus_validator.to_openapi_requestbody(None)
116+
res = self.simple_schema_cerberus_validator.to_openapi_requestbody(None, None)
117117
self.assertEqual(
118118
res,
119119
{
@@ -140,7 +140,7 @@ def test_to_openapi_requestbody(self):
140140
}
141141
},
142142
)
143-
res = self.nested_schema_cerberus_validator.to_openapi_requestbody(None)
143+
res = self.nested_schema_cerberus_validator.to_openapi_requestbody(None, None)
144144
self.assertDictEqual(
145145
res,
146146
{
@@ -168,7 +168,9 @@ def test_to_openapi_requestbody(self):
168168
)
169169

170170
def test_to_openapi_query_parameters(self):
171-
res = self.simple_schema_cerberus_validator.to_openapi_query_parameters(None)
171+
res = self.simple_schema_cerberus_validator.to_openapi_query_parameters(
172+
None, None
173+
)
172174
self.assertListEqual(
173175
res,
174176
[
@@ -206,7 +208,9 @@ def test_to_openapi_query_parameters(self):
206208
},
207209
],
208210
)
209-
res = self.nested_schema_cerberus_validator.to_openapi_query_parameters(None)
211+
res = self.nested_schema_cerberus_validator.to_openapi_query_parameters(
212+
None, None
213+
)
210214
self.assertListEqual(
211215
res,
212216
[

base_rest_datamodel/restapi.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,22 @@ def to_response(self, service, result):
5252
raise SystemError(_("Invalid Response %s") % errors)
5353
return json
5454

55-
def to_openapi_query_parameters(self, service):
55+
def to_openapi_query_parameters(self, service, spec):
5656
converter = self._get_converter()
5757
schema = self._get_schema(service)
5858
return converter.schema2parameters(schema, location="query")
5959

6060
# TODO, we should probably get the spec as parameters. That should
6161
# allows to add the definition of a schema only once into the specs
6262
# and use a reference to the schema into the parameters
63-
def to_openapi_requestbody(self, service):
63+
def to_openapi_requestbody(self, service, spec):
6464
return {
6565
"content": {
6666
"application/json": {"schema": self.to_json_schema(service, "input")}
6767
}
6868
}
6969

70-
def to_openapi_responses(self, service):
70+
def to_openapi_responses(self, service, spec):
7171
return {
7272
"200": {
7373
"content": {

base_rest_demo/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from . import controllers
22
from . import datamodels
3+
from . import pydantic_models
34
from . import services

base_rest_demo/__manifest__.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,17 @@
1111
"author": "ACSONE SA/NV, " "Odoo Community Association (OCA)",
1212
"maintainers": ["lmignon"],
1313
"website": "https://github.com/OCA/rest-framework",
14-
"depends": ["base_rest", "base_rest_datamodel", "component"],
14+
"depends": [
15+
"base_rest",
16+
"base_rest_datamodel",
17+
"base_rest_pydantic",
18+
"component",
19+
"extendable",
20+
],
1521
"data": [],
1622
"demo": [],
17-
"external_dependencies": {"python": ["jsondiff"]},
23+
"external_dependencies": {
24+
"python": ["jsondiff", "extendable-pydantic", "pydantic"]
25+
},
1826
"installable": True,
1927
}

0 commit comments

Comments
 (0)