Diferencia entre revisiones de «Web Controller en Odoo»

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda
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:

Postmanauthenticationodoo.gif

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ó.