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