94595ba992a770a9cce58a025adc0f2c0dd68fe4
Users sometime want to rename existing controllers URL, e.g. /shop as french /magasin. The feature is possible within Odoo thanks to 308 type redirections that can be configured via a hidden ?debug=1-only website menu. Upon generating the routing-map (the structure that links URLs to controllers), when a URL is found inside of the `website.rewrite` model, two links (called Rules in werkzeug jargon) are registered: the new, translated, URL is linked to the controller and the original URL is linked to a redirection to the new URL. For the context of this PR, it is important to note that the redirection only applies to the very URL saved inside the `website.rewrite` model: if a controller has multiple routes, e.g. `/shop` and `/shop/shop`, only `/shop` is redirected to `/magasin`, `/shop/shop` is left as-is. Without 308 redirection: /shop -> def shop() /shop/shop -> def shop() With 308 redirection: website.rewrite(from_url='/shop', to_url='/magasin') /shop -> /magasin /shop/shop -> def shop() /magasin -> def shop() The redirection is set on the routing dictionnary of the endpoint, this is the dictionnary that collect the informations set via the `@route` decorator (auth=, method=, type=, ...). Prior to [HTTPocalypse], that dictionnary was duplicated so that the redirection was applied on the single route endpoint that matched the `website.rewrite` record. With [HTTPocalypse] that duplication has been wrongly removed: all original routes redirected to the new translated one. Bug introduced in [HTTPocalypse]: website.rewrite(from_url='/shop', to_url='/magasin') /shop -> /magasin /shop/shop -> /magasin <-- wrong /magasin -> def shop() This PR fixes the problem, it makes sure that the redirection is saved *only* on the route that matched the website.rewrite record, not the other routes. [HTTPocalypse]: https://github.com/odoo/odoo/pull/78857 closes odoo/odoo#133960 closes odoo/odoo#134206 X-original-commit: 144a22c22c95004171860cdaecd1f7d7975dc468 Signed-off-by: Romain Derie (rde) <rde@odoo.com>
…
…
…
Odoo
Odoo is a suite of web based open source business apps.
The main Odoo Apps include an Open Source CRM, Website Builder, eCommerce, Warehouse Management, Project Management, Billing & Accounting, Point of Sale, Human Resources, Marketing, Manufacturing, ...
Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps.
Getting started with Odoo
For a standard installation please follow the Setup instructions from the documentation.
To learn the software, we recommend the Odoo eLearning, or Scale-up, the business game. Developers can start with the developer tutorials
Languages
Python
49.6%
JavaScript
47.8%
SCSS
2%
CSS
0.3%
HTML
0.2%