Guys:
I create a web controller:
from openerp import http
import simplejson
from openerp.http import Response
class WebClient(http.Controller):
@http.route('/web/webclient/ejemplo', type='json',auth='public', methods=['POST'], website=True)
@serialize_exception
def index(self, **args):
print 'CONNECTION SUCCESSFUL ***'
print 'args *** ' , args
name = args.get('name', False)
email = args.get('email', False)
if not name:
Response.status = '400 Bad Request'
#return '{"response": "OK"}'
return request.make_response(simplejson.dumps({"response": "OK"}),
[('Content-Type', 'application/json'),
])
And call this method whit this python script:
import json
import requests
url = 'http://localhost:8069/web/webclient/ejemplo'
headers = {'Content-Type': 'application/json'}
data = {
'jsonrpc':'2.0',
'method':'call',
'params':{'context':{},
'name':'hola',
'email':'emailing'},
}
}
data_json = json.dumps(data)
r = requests.post(url=url, data=data_json, headers=headers)
c = r.text
print c
print show this:
{"jsonrpc": "2.0", "id": null,
"error": {"message": "Odoo Server Error", "code": 200,
"data": {"debug": "Traceback (most recent call last):\n
File \"/home/opencons/herramientas/odoo-8.0/openerp/http.py\", line 537, in _handle_exception\n return super(JsonRequest, self)._handle_exception(exception)\n File \"/home/opencons/herramientas/odoo-8.0/openerp/http.py\", line 1422, in _dispatch_nodb\n func, arguments = self.nodb_routing_map.bind_to_environ(request.httprequest.environ).match()\n File \"/usr/lib/python2.7/dist-packages/werkzeug/routing.py\", line 1433, in match\n raise NotFound()\nNotFound: 404: Not Found\n",
"message": "", "name": "werkzeug.exceptions.NotFound", "arguments": []}}}
and the console
2017-04-19 22:16:33,563 4880 INFO ? openerp.http: HTTP Configuring static files 2017-04-19 22:16:33,568 4880 INFO None openerp.http: Generating nondb routing openerp.conf.server_wide_modules ['web', 'web_kanban']
2017-04-19 22:16:33,575 4880 ERROR None openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/home/opencons/herramientas/odoo-8.0/openerp/http.py", line 537, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/opencons/herramientas/odoo-8.0/openerp/http.py", line 1422, in _dispatch_nodb
func, arguments = self.nodb_routing_map.bind_to_environ(request.httprequest.environ).match()
File "/usr/lib/python2.7/dist-packages/werkzeug/routing.py", line 1433, in match
raise NotFound()
NotFound: 404: Not Found 2017-04-19 22:16:33,576 4880 INFO None werkzeug: 127.0.0.1 - - [19/Apr/2017 22:16:33] "POST /web/webclient/ejemplo HTTP/1.1" 200 -
this code is in odoo v8.
Is posible call web controllers from python script?
and Why does odoov8 show the error NotFounf: 404?