如何覆盖 Odoo 11 中的 http.py 方法?
How to override http.py methods in Odoo 11?
我想为我的附加组件重写 setup_db
方法,因为在当前情况下你不能从 url
获取带有数据库名称的参数,并且如果用户有超过 1 个数据库我无法从隐身模式 运行 我的登录 link。
我不想让用户先去/web/database/selector
。
我正在考虑用户去 /web/login?db=example_db_name
然后以某种方式重定向到我的登录名 link。
("somehow" 因为如果你输入它,它会将你重定向到 /web/login,所以我无法从登录页面添加重定向)。
我这样做是假设 odoo.conf
用户有
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
我想为我的附加组件重写 setup_db
方法,因为在当前情况下你不能从 url
获取带有数据库名称的参数,并且如果用户有超过 1 个数据库我无法从隐身模式 运行 我的登录 link。
我不想让用户先去/web/database/selector
。
我正在考虑用户去 /web/login?db=example_db_name
然后以某种方式重定向到我的登录名 link。
("somehow" 因为如果你输入它,它会将你重定向到 /web/login,所以我无法从登录页面添加重定向)。
我这样做是假设 odoo.conf
用户有
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