Python 如何在Odoo 11中重写http.py方法?
我想为我的加载项覆盖Python 如何在Odoo 11中重写http.py方法?,python,odoo,odoo-11,Python,Odoo,Odoo 11,我想为我的加载项覆盖setup\u db方法,因为在当前情况下,您不能使用db name从url获取参数,并且如果用户有多个数据库,我无法从incognito运行我的登录链接 我不希望用户先转到/web/database/selector 我想用户应该转到/web/login?db=example\u db\u name,然后以某种方式重定向到我的登录链接 (“不知何故”,因为若您键入它,它会将您重定向到/web/login,所以我无法从登录页面添加重定向) 我这样做是假设在odoo.confu
setup\u db
方法,因为在当前情况下,您不能使用db name从url
获取参数,并且如果用户有多个数据库,我无法从incognito运行我的登录链接
我不希望用户先转到/web/database/selector
我想用户应该转到/web/login?db=example\u db\u name
,然后以某种方式重定向到我的登录链接
(“不知何故”,因为若您键入它,它会将您重定向到/web/login,所以我无法从登录页面添加重定向)
我这样做是假设在odoo.conf
user
db_name = False, dbfilter = .
如果你面临同样的问题,这里是我的解决方案。它覆盖了默认方法,这通常有点糟糕,但在我们的情况下,我们无能为力
from odoo import http
class Rooting(http.Root):
def setup_db(self, httprequest):
db = httprequest.session.db
# Check if session.db is legit
if db:
if db not in http.db_filter([db], httprequest=httprequest):
httprequest.session.logout()
db = None
if not db:
if 'db' in httprequest.args:
db = httprequest.args['db']
httprequest.session.db = db
if not db:
httprequest.session.db = http.db_monodb(httprequest)
http.Root.setup_db = Rooting.setup_db
如果你面临同样的问题,这里是我的解决方案。它覆盖了默认方法,这通常有点糟糕,但在我们的情况下,我们无能为力
from odoo import http
class Rooting(http.Root):
def setup_db(self, httprequest):
db = httprequest.session.db
# Check if session.db is legit
if db:
if db not in http.db_filter([db], httprequest=httprequest):
httprequest.session.logout()
db = None
if not db:
if 'db' in httprequest.args:
db = httprequest.args['db']
httprequest.session.db = db
if not db:
httprequest.session.db = http.db_monodb(httprequest)
http.Root.setup_db = Rooting.setup_db