diff --git a/easy_my_coop_api/controllers/controllers.py b/easy_my_coop_api/controllers/controllers.py index 1528d22..e8d5f89 100644 --- a/easy_my_coop_api/controllers/controllers.py +++ b/easy_my_coop_api/controllers/controllers.py @@ -3,11 +3,30 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +import re + +from odoo import http from odoo.http import route from odoo.addons.base_rest.controllers import main +def patch_for_json(path_re): + # this is to avoid Odoo, which assumes json always means json+rpc, + # complaining about "function declared as capable of handling request + # of type 'http' but called with a request of type 'json'" + # cf rest-framework/graphql_base/controllers/main.py + path_re = re.compile(path_re) + orig_get_request = http.Root.get_request + + def get_request(self, httprequest): + if path_re.match(httprequest.path): + return http.HttpRequest(httprequest) + return orig_get_request(self, httprequest) + + http.Root.get_request = get_request + + class UserController(main.RestController): _root_path = "/api/" _collection_name = "emc.services" @@ -33,3 +52,5 @@ class UserController(main.RestController): return self._process_method( _service_name, "validate", _id=_id, params=params ) + + patch_for_json("^/api/subscription-request/[0-9]*/validate$")