¿OCA dbfilter_from_header fallo con Odoo 16?

322 views
Skip to first unread message

marin...@gmail.com

unread,
Nov 23, 2022, 1:27:09 PM11/23/22
to Usuarios Odoo / OpenERP en España
Buenas tardes:

Estamos probando el módulo dbfilter_from_header con Odoo 16 CA. Lo hemos estado usando en anteriores ediciones y nunca tuvimos problemas con este módulo. Funciona de maravilla.

Estoy experimentando un fallo con Odoo 16, si alguien puede ayudar a solucionarlo, por favor no dude en mandarme un presupuesto en privado.

Para usar ese módulo es preciso poner en CONF de Odoo las siguientes líneas.

proxy_mode = True
server_wide_modules = base,web,dbfilter_from_header

Con Odoo 16 tal vez haya un problema con el módulo y los dominios web dejan de funcionar al actualizar el archivo .COBF de Odoo como descrito arriba.

Desde los logs de Odoo:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 305, in db_list
    return db_filter(dbs, host)
  File "/usr/lib/python3/dist-packages/odoo/.local/share/Odoo/addons/16.0/dbfilter_from_header/override.py", line 18, in db_filter
    db_filter_hdr = httprequest.environ.get("HTTP_X_ODOO_DBFILTER")

2022-11-23 13:43:51,123 781513 ERROR ? werkzeug: Error on request:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 306, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 294, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1956, in __call__
    request._post_init()
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1114, in _post_init
    self.session, self.db = self._get_session_and_dbname()
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1144, in _get_session_and_dbname
    if session.db and db_filter([session.db], host=host):
TypeError: db_filter() got an unexpected keyword argument 'host' -

Si por aquí estuviera algún desarrollador de este módulo de OCA, ante todo agradecer su trabajo estos años y renovar la propuesta económica a fin de actualizar este módulo para el 16, de hacer falta.

Gracias de antemano

Xabier Arrabal

unread,
Nov 23, 2022, 2:55:53 PM11/23/22
to Usuarios Odoo / OpenERP en España
Por el error creo que no es un problema del módulo sino de configuración. Además de los pasos de configuración que indicas ¿has hecho bien la configuración del site en nginx? Necesita entre otros el parámetro X-Odoo-Dbfilter

marin...@gmail.com

unread,
Nov 23, 2022, 4:01:57 PM11/23/22
to Usuarios Odoo / OpenERP en España
Ante todo, gracias por tu respuesta.

Sí, lo usamos desde el Odoo 13, pero con APACHE, ponemos en VH de Apache lo siguiente:

RequestHeader set X-Odoo-dbfilter

Es cierto que he cambiado a Nginx para Odoo 16, pero no sabría decir ahora mismo con certidumbre si es un errónea configuración de Nginx:

proxy_set_header X-Odoo-dbfilter BASEDEDATOS;

¿Lo podrías probar con Odoo 16 y Nginx?

O si alguien por favor lo ha probado, o lo puede probar con Odoo 16 y Nginx, se agradece mucho retroalimentación.

Saludos!

Xabier Arrabal

unread,
Nov 23, 2022, 4:54:33 PM11/23/22
to Usuarios Odoo / OpenERP en España
En la configuración de nginx tienes que poner algo como esto:
location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Odoo-dbfilter "BASEDATOS_ODOO";
        proxy_redirect off;
        proxy_pass http://odoo16;
}


http://odoo16 se configura en default como

upstream odoo16 {
        server 127.0.0.1:PUERTO_DE_ODOO_16;
}

marin...@gmail.com

unread,
Nov 23, 2022, 6:41:18 PM11/23/22
to Usuarios Odoo / OpenERP en España
Hola Xabier, muchas gracias por tu respuesta.

Así lo tenemos en Nginx,  no hay manera con el 16.

El problema creo viene del archivo odoo.conf, cuando añadimos:

server_wide_modules = base,web,dbfilter_from_header

En logs aparece esto:

 File "/usr/lib/python3/dist-packages/odoo/.local/share/Odoo/addons/16.0/dbfilter_from_header/override.py", line 18, in db_filter
    db_filter_hdr = httprequest.environ.get("HTTP_X_ODOO_DBFILTER")

¿Lo podrías probar con un 16?

O si alguien en este grupo por favor puede probarlo con un 16 y confirmar, o no, esta incidencia.

Se agradece mucho

Xabier Arrabal

unread,
Nov 23, 2022, 6:47:41 PM11/23/22
to Usuarios Odoo / OpenERP en España
¿De dónde has sacado el modulo dbfilter_from_header? En OCA todavía no se ha migrado a la 16. 

marin...@gmail.com

unread,
Nov 23, 2022, 8:36:35 PM11/23/22
to Usuarios Odoo / OpenERP en España
Hola Xab, gracias por tu respuesta!

He modificado para el 16 manualmente  la versión en __manifest__.py , este módulo no ha cambiado en el resto de código desde varias ediciones ;-)
Así me lo deja instalar en APPs pero.. pero.. el problema no está tanto en instalarlo creo sino en la "precaraga" server-wide  cuando  le pongo la línea en etc/odoo/odoo.conf

server_wide_modules = base,web,dbfilter_from_header

En resumen: me deja instalarlo en el 16 pero si lo pongo server-wide me da 500 en todos los dominios web

Por cierto: un gran trabajo de la gente de OCA, es un módulo imprescindible.

Gracias!

Alejandro Aladro

unread,
Nov 25, 2022, 3:30:13 AM11/25/22
to Usuarios Odoo / OpenERP en España
Buenas, no soy un experto en sistemas y servidores web, pero quizá pueda afectar el cambio de long-polling a websockets ? 

un saludo.

marin...@gmail.com

unread,
Nov 25, 2022, 7:18:24 AM11/25/22
to Usuarios Odoo / OpenERP en España
Muy buen punto, muy cierto.

Si alguien más puede confirmar, se agradece.

Saludos!

Emiliano Avendano

unread,
Nov 29, 2022, 8:27:21 PM11/29/22
to Usuarios Odoo / OpenERP en España
Buenas tardees grupo.
Mi situación es idem a la de marin... No creo que sea problema con la configuración, desde odoo13, 14 y 15 el modulo funciona muy bién. Pero con odoo16 falla: 
File "/usr/lib/python3/dist-packages/odoo/.local/share/Odoo/addons/16.0/dbfilter_from_header/override.py", line 18, in db_filter
    db_filter_hdr = httprequest.environ.get("HTTP_X_ODOO_DBFILTER")
Nos toca revisar si algo de la invocación de Variables de ambiente desde python ha tenido algún cambio. 
Hare las pruebas y les cuento.

marin...@gmail.com

unread,
Dec 2, 2022, 11:14:17 AM12/2/22
to Usuarios Odoo / OpenERP en España
Hola emil... muchas gracias por tu seguimiento.

El tuyo es exactamente el error que recibimos nosotros, dudo yo también a estas alturas que sea un problema de configuración. 

Necesitamos actualizar dbfilter_from_header para el 16.

Gracias a todos

marin...@gmail.com

unread,
Dec 9, 2022, 4:21:54 PM12/9/22
to Usuarios Odoo / OpenERP en España
Buenas tardes, 

Parece que la solución para el 16, por ahora y a falta de mas test, es la siguiente.

Lo hemos probado y parece OK, igual avisamos  las próximas semanas si salen errores:


Gracias a todos

Reply all
Reply to author
Forward
0 new messages