¿Cómo enviar un mensaje simple y el estado como respuesta en un controlador Odoo JSON?
Intenté diferentes formas de hacerlo, pero no funcionaron.
Primero intenté de esta manera:
import openerp.http as http
from openerp.http import Response
class ResPartnerController(http.Controller):
@http.route('/odoo/create_partner', type='json', auth='none')
def index(self, **kwargs):
Response.status = '400'
return "Result message"
Obtengo el estado correcto y el mensaje en el cliente. Pero recibo esta extraña advertencia si hago alguna acción en la interfaz de Odoo
¿Hay alguna manera de evitar este mensaje?
Intenté esto en ambos sentidos también:
data = {'result': 'RESULT message'}
json_data = json.dumps(data, encoding='utf-8')
headers = [('Content-Type', '{}; charset=utf-8'.format('application/json'))]
mimetype = 'application/json'
res = Response(
response=json_data,
status=status,
headers=headers,
mimetype=mimetype,
)
return res
msg = u'Response 200 badly built, falling back to a simple 200 OK response'
res = Response(msg, status=200)
return res
Pero siempre recibo este error como respuesta en el cliente:
TypeError: <Response 9 bytes [400 BAD REQUEST]> is not JSON serializable\n", "message": "<Response 9 bytes [400 BAD REQUEST]> is not JSON serializable"
Entonces, ¿hay una manera limpia de responder un mensaje simple con el estado de la respuesta?
Es importante para mí enviar el estado de la respuesta también
Si simplemente respondo un mensaje, todo funciona bien, pero ¿cómo cambiar el estado sin comportamientos extraños?
Por cierto, uso este script para hacer las llamadas
# -*- coding: utf-8 -*-
import requests
import json
url = 'http://localhost:8069/odoo/create_partner'
headers = {'Content-Type': 'application/json'}
data_res_partner = {
'params': {
'name': 'Example',
'email': '[email protected]',
}
}
data_json = json.dumps(data_res_partner)
response = requests.post(url=url, data=data_json, headers=headers)
print(response.status_code)
print(response.content)
Actualizar
Finalmente @Phillip Stack me dijo que hiciera esto con XML-RPC, así que escribí estootra pregunta para aclarar mis dudas