first push message
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# middleware.py
|
||||
import re
|
||||
import odoo
|
||||
from odoo.tools import config as odoo_config
|
||||
from odoo import tools, api, fields, models, _
|
||||
|
||||
|
||||
class URLRewriteMiddleware:
|
||||
"""WSGI middleware to rewrite 'odoo' in URLs to custom base"""
|
||||
|
||||
def __init__(self, app):
|
||||
self.app = app
|
||||
|
||||
def _get_replacement(self):
|
||||
"""Get replacement value from ir.config_parameter"""
|
||||
try:
|
||||
from odoo.modules.registry import Registry
|
||||
registry = Registry(odoo_config.get('database', 'postgres'))
|
||||
with registry.cursor() as cr:
|
||||
env = api.Environment(cr, odoo.SUPERUSER_ID, {})
|
||||
return env['ir.config_parameter'].sudo().get_param('web.base.sorturl', '')
|
||||
except Exception:
|
||||
return ''
|
||||
|
||||
def __call__(self, environ, start_response):
|
||||
path = environ.get('PATH_INFO', '')
|
||||
replacement = self._get_replacement()
|
||||
|
||||
# Only rewrite non-static paths containing 'odoo'
|
||||
if replacement and 'odoo' in path and '/web/static' not in path:
|
||||
new_path = path.replace('odoo', replacement, 1) # Replace first occurrence only
|
||||
environ['PATH_INFO'] = new_path
|
||||
environ['REQUEST_URI'] = environ.get('REQUEST_URI', '').replace('odoo', replacement, 1)
|
||||
|
||||
return self.app(environ, start_response)
|
||||
Reference in New Issue
Block a user