Diferencia entre revisiones de «Web Controller en Odoo»
Sin resumen de edición |
|||
Línea 1: | Línea 1: | ||
En Odoo hi ha moltes maneres de comunicar-se amb el servidor: | |||
* Entrant en el backend | |||
* La pàgina web (frontend) | |||
* El TPV | |||
* Amb un API de XML-RPC per a aplicacions Java, Python o PHP. | |||
* Amb els controladors web per a consultes web o Ajax. | |||
Si volem fer la web com dicta Odoo, cal aprendre a fer webs en Odoo. Però si el que volem és accedir a Odoo com un servidor '''Rest''' o similar des de una aplicació web diferent, hem de crear la interficie de servidor web amb Odoo i formular correctament les peticions Ajax. | |||
En aquest manual la intenció és fer una aplicació web en Angular que consulte coses a Odoo. | |||
== CORS en Odoo == | == CORS en Odoo == | ||
Revisión del 17:50 26 oct 2020
En Odoo hi ha moltes maneres de comunicar-se amb el servidor:
- Entrant en el backend
- La pàgina web (frontend)
- El TPV
- Amb un API de XML-RPC per a aplicacions Java, Python o PHP.
- Amb els controladors web per a consultes web o Ajax.
Si volem fer la web com dicta Odoo, cal aprendre a fer webs en Odoo. Però si el que volem és accedir a Odoo com un servidor Rest o similar des de una aplicació web diferent, hem de crear la interficie de servidor web amb Odoo i formular correctament les peticions Ajax.
En aquest manual la intenció és fer una aplicació web en Angular que consulte coses a Odoo.
CORS en Odoo
Odoo no permet peticions Ajax que no vinguen del mateix origen que ell. Això ho podem canviar en cada route amb cors='*'
Si volem permetre CORS en tot odoo, el millor és instal·lar Ngingx, configurar-lo per a permetre CORS i fer que actue com a proxy d'Odoo.
Autenticació
En el directori d'addons d'Odoo, en el mòdul web/controller, trobem aquest codi:
@http.route('/web/session/authenticate', type='json', auth="none")
def authenticate(self, db, login, password, base_location=None):
request.session.authenticate(db, login, password)
return request.env['ir.http'].session_info()
Eixa és la ruta d'autentificació. Com es veu, accepta un json amb la base de dades, login, password...
Si vulguem fer una aplicació que connecte amb Odoo via web, deguem autenticar-nos. Anem a analitzar el que demana. Per a fer-ho utilitzarem el programa Postman
En aquest gif es veu el que hem de ficar en el Postman per a veure si funciona el API:
Podem copiar aquest codi per autenticar-nos en la ruta que necessitem. Cal importar:
from odoo.http import request
Observem que en la resposta va una Cookie que és la sessió. Si en el postman o en en navegador l'esborrem es perd la sessió.