diff options
| author | Ivan Yelizariev <iel@odoo.com> | 2020-12-22 13:13:31 +0000 |
|---|---|---|
| committer | Ivan Yelizariev <iel@odoo.com> | 2021-01-04 11:20:45 +0000 |
| commit | 1237940249f259907d55229b2cf5954a31896de1 (patch) | |
| tree | 301dbe31d2031ea8b5b4ed60100d6f80ba73a37e /addons/website_form/controllers | |
| parent | 679b5893f04ac4c8a8093f9538e9f4653224bd69 (diff) | |
[FIX] website_form: prevent adding lang prefix to form action url
STEPS:
* create fresh db with default lang fr_CH
* install website
* activate additional language, e.g. en_GB
* set for website only one available language: fr_CH
* for admin user set lang en_GB
* open website and add form
BEFORE: the form doesn't work, because action url is "/en_GB/website_form/"
AFTER: action url is not changed
WHY:
1.
``is_multilang_url`` returns ``True``, because there is no route ``/website_form/``
https://github.com/odoo/odoo/blob/0adcb9a09fe5714fe8479df9450ddcefa7ba0688/addons/http_routing/models/ir_http.py#L233-L244
2.
Model name in action is added after rendering only, this is why ``is_multilang_url`` is
called with ``/website_form/`` and not real url
https://github.com/odoo/odoo/blob/0adcb9a09fe5714fe8479df9450ddcefa7ba0688/addons/website_form/static/src/js/website_form.js#L144
3.
As result we get error on trying to make request ``/en_GB/website_form/mail.mail``
---
opw-2413960
closes odoo/odoo#63997
X-original-commit: e9e86e251b7e262c4fe9c71722c27cc69cc3b712
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Diffstat (limited to 'addons/website_form/controllers')
| -rw-r--r-- | addons/website_form/controllers/main.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/addons/website_form/controllers/main.py b/addons/website_form/controllers/main.py index bd7a68c3c22..9de4b95d406 100644 --- a/addons/website_form/controllers/main.py +++ b/addons/website_form/controllers/main.py @@ -19,6 +19,11 @@ from odoo.addons.base.models.ir_qweb_fields import nl2br class WebsiteForm(http.Controller): + @http.route('/website_form/', type='http', auth="public", methods=['POST'], multilang=False) + def website_form_empty(self, **kwargs): + # This is a workaround to don't add language prefix to <form action="/website_form/" ...> + return "" + # Check and insert values from the form on the model <model> @http.route('/website_form/<string:model_name>', type='http', auth="public", methods=['POST'], website=True, csrf=False) def website_form(self, model_name, **kwargs): |
