如何在Odoo 11中覆盖http.py方法?

时间:2018-08-16 11:26:29

标签: python odoo odoo-11

我想为插件重载lr_vkorg = VALUE #( FOR ls_vkorg IN gt_vkorg ( sign = 'I' option = 'EQ' low = ls_vkorg-vkorg ) ). 方法,因为在当前情况下,您不能使用数据库名称从setup_db中获取参数,并且如果用户拥有多个数据库,我可以`从隐身模式运行我的登录链接。

我不希望用户先进入url

我正在考虑用户转到/web/database/selector,然后以某种方式重定向到我的登录链接。

(“以某种方式”,因为如果您键入它,它会将您重定向到/ web / login,因此我无法从登录页面添加重定向)。

我这样做是假设/web/login?db=example_db_name中的用户拥有

odoo.conf

1 个答案:

答案 0 :(得分:0)

如果您遇到相同的问题,这是我的解决方案。它覆盖了默认方法,通常这是一个不好的方法,但是在我们这种情况下,我们无能为力。

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