Как преобразовать вложенный словарь в объект json - Odoo12? - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь вернуть вложенный словарь как объект json, но получаю ошибку ниже.

Traceback (последний вызов последний): File "/ usr / local / lib / python3 .6 / dist-packages / werkzeug / serve.py ", строка 270, в файле run_wsgi execute (self.server.app)" /usr/local/lib/python3.6/dist-packages/werkzeug/ serve.py », строка 258, в файле execute application_iter = app (environment, start_response)« /home/user/Projects/odoo_12_EE/odoo/service/server.py », строка 409, в приложении return self.app (e, s) Файл "/home/user/Projects/odoo_12_EE/odoo/service/wsgi_server.py", строка 128, в возврате приложения application_unproxied (environment, start_response) File "/ home / user / Projects / odoo_12_EE / odoo / service / wsgi_server .py ", строка 117, в application_unproxied result = odoo.http. root (Environment, start_response) Файл" /home/user/Projects/odoo_12_EE/odoo/http.py ", строка 1318, в call return self.dispatch (environment, start_response) Файл "/home/user/Projects/odoo_12_EE/odoo/http.py", строка 1291, в cal l return self.app (Environment, start_wrapped) Файл "/usr/local/lib/python3.6/dist-packages/werkzeug/wsgi.py", строка 766, в вызов return self.app (Environment, start_response) Файл "/home/user/Projects/odoo_12_EE/odoo/http.py", строка 1491, в ответе на отправку возврата (Environment, start_response) TypeError: объект 'dict' не вызывается - - -

Вот мой код. controller.py

  class GetOrderStatus(http.Controller):
      @http.route('/getOrderStatus/<string:order_num>',type="http",method=['POST','GET'],website=False,auth="public")
      def _get_order_status(self,**kw):
          print('kwww',kw)
          order_id = request.env['helpdesk.ticket'].sudo().search([('name','=',kw.get('order_num'))])
          order_id.ensure_one()
          vals = {
          "statusCode":200,
          "statuDescription":"success",
          "data":{"order_status":order_id.stage_id.name}
          }
          print('vals',vals)
          n = json.dumps(vals)
          return json.loads(n)

Как я могу решить эту проблему?

1 Ответ

2 голосов
/ 05 мая 2020

Если вы хотите отправить json данные вместе с вашим ответом, сделайте это json запрос типа.

from odoo.http import Response
import json
    class GetOrderStatus(http.Controller):
          @http.route('/getOrderStatus/<string:order_num>', type="json", method=['POST','GET'], website=False, auth="public", csrf=False)
          def _get_order_status(self,**kw):
              order_id = request.env['helpdesk.ticket'].sudo().search([('name','=',kw.get('order_num'))])
              order_id.ensure_one()
              return Response(json.dumps({"order_status":order_id.stage_id.name}),content_type='application/json;charset=utf-8',status=200)
...