- Aug 06, 2023
-
-
Odoo Translation Bot authored
-
- Jul 30, 2023
-
-
Odoo Translation Bot authored
-
- Jul 23, 2023
-
-
Odoo Translation Bot authored
-
- Jul 09, 2023
-
-
Odoo Translation Bot authored
-
- Jul 02, 2023
-
-
Odoo Translation Bot authored
-
- Jun 18, 2023
-
-
Odoo Translation Bot authored
-
- Jun 08, 2023
-
-
Julien Castiaux authored
The geoip resolver was moved from http_routing to code/http.py in #86015 and is always available since then. The `_geoip_resolver` global variable is a leftover we forgot to remove. Backport to 16.0 of saas-16.1 270672da closes odoo/odoo#124319 Signed-off-by:
Julien Castiaux (juc) <juc@odoo.com>
-
- Jun 04, 2023
-
-
Odoo Translation Bot authored
-
- May 25, 2023
-
-
Jeremy Kersten authored
The 'frontend_lang' cookie is used to 'cache' the user's preferred lang. We want to make sure that this language preference is preserved for a longer period of time than just the life of the browser. This means that even if you quit your browser and come back into the year, your preferred language will be used, until you choose to remove your cookies. The 'utm_*' cookies are used to 'track' where you are coming from on the instance. The purpose of these cookies is to know the tracking value to improve the overall user experience or compute the profitability of some campaigns. Now we keep these cookies for 1 month. closes odoo/odoo#122295 Signed-off-by:
Romain Derie (rde) <rde@odoo.com>
-
- May 14, 2023
-
-
Odoo Translation Bot authored
-
- May 07, 2023
-
-
Odoo Translation Bot authored
-
- Apr 26, 2023
-
-
Odoo Translation Bot authored
-
- Apr 16, 2023
-
-
Odoo Translation Bot authored
-
- Apr 09, 2023
-
-
Odoo Translation Bot authored
-
- Apr 02, 2023
-
-
Odoo Translation Bot authored
-
- Mar 05, 2023
-
-
Odoo Translation Bot authored
-
- Feb 15, 2023
-
-
Benoit Socias authored
*: base, http_routing, mass_mailing, web, web_editor, website_slides In some situations `werkzeug.wrappers.Response` are used instead of `odoo.http.Reponse` that extends it. This is a problem because since [1] the calls to `set_cookie` expect it to accept the `cookie_type` parameter, which is not the case in the base werkzeug implementation. This commit replaces the `werkzeug.wrappers.Response` by `odoo.http.Response`. [1]: https://github.com/odoo/odoo/commit/2cbda6c98ee947cea1d06c09880eee8c758304a8 closes odoo/odoo#111997 Signed-off-by:
Julien Castiaux (juc) <juc@odoo.com>
-
- Feb 13, 2023
-
-
Odoo Translation Bot authored
-
- Feb 09, 2023
-
-
Julien Castiaux authored
The path matching logic got reimplemented in werkzeug 2.2[^1] and the new router is no more compatible with regexp groups[^2]. Our custom converter for slugged-records in urls (`'/partner/agrolait-5'` => `5`) has been adapted to match the route using non-capturing groups. It still extracts the slug/id pair using the groups-capturing regexp. [^1]: https://github.com/pallets/werkzeug/pull/2433 [^2]: https://github.com/pallets/werkzeug/pull/2519 Part-of: odoo/odoo#112197
-
- Feb 05, 2023
-
-
Odoo Translation Bot authored
-
- Jan 29, 2023
-
-
Odoo Translation Bot authored
-
- Jan 22, 2023
-
-
Odoo Translation Bot authored
-
- Jan 15, 2023
-
-
Odoo Translation Bot authored
-
- Jan 08, 2023
-
-
Odoo Translation Bot authored
-
- Jan 01, 2023
-
-
Odoo Translation Bot authored
-
- Dec 25, 2022
-
-
Odoo Translation Bot authored
-
- Dec 18, 2022
-
-
Odoo Translation Bot authored
-
- Dec 04, 2022
-
-
Odoo Translation Bot authored
-
- Nov 27, 2022
-
-
Odoo Translation Bot authored
-
- Nov 21, 2022
-
-
Jeremy Kersten authored
Move code to support only the redirect from url containing double '/' in the middle of the path. Keep same behavior than v15 and default Apache behavior. domain.com//shop/product/1 -> 404 domain.com/shop//product/1 -> 301 -> /shop/product/1 opw-3063387 closes odoo/odoo#105936 X-original-commit: 0c6a474202970daebd232c16edb8cf7bf872a918 Signed-off-by:
Julien Castiaux <juc@odoo.com> Signed-off-by:
Jérémy Kersten <jke@odoo.com>
-
- Nov 20, 2022
-
-
Odoo Translation Bot authored
-
- Nov 14, 2022
-
-
Julien Castiaux authored
Define a route that is website but not multilang, e.g. @route('/example', website=True, multilang=False) Login to the frontend, change the website lang to another (non-default) lang (e.g. install french, keep english as default lang, log in the french website) then access the '/example' controller by typing it directly in your address bar. You are being redirected to '/fr/example', you should not. This commit restore the behavior pre-httpocalypse, that is the address is kept as-is. Note: in the comment, the 4th and 5th cases were inverted, we use this commit as an opportunity to reorder the two. closes odoo/odoo#104999 X-original-commit: 09dfb1af717cad4281ea0eefbecbe859751ed1bf Signed-off-by:
Julien Castiaux <juc@odoo.com>
-
- Nov 13, 2022
-
-
Odoo Translation Bot authored
-
- Oct 30, 2022
-
-
Odoo Translation Bot authored
-
- Oct 23, 2022
-
-
Odoo Translation Bot authored
-
- Oct 16, 2022
-
-
Odoo Translation Bot authored
-
- Oct 09, 2022
-
-
Odoo Translation Bot authored
-
- Oct 02, 2022
-
-
Odoo Translation Bot authored
-
- Sep 25, 2022
-
-
Odoo Translation Bot authored
-
- Sep 15, 2022
-
-
Chong Wang (cwg) authored
Translated fields no longer use the model ir.translation. Instead they store all their values as JSON, and store them into JSONB columns in the model's table. The field's column value is either NULL or a JSON dict mapping language codes to text (the field's value in the corresponding language), and must contain an entry for key 'en_US' (as it is used as a fallback for all other languages). Empty text is allowed in translation values, but not NULL. Here are examples for a field with translate=True: NULL {"en_US": "Foo"} {"en_US": "Foo", "fr_FR": "Bar", "nl_NL": "Baz"} {"en_US": "Foo", "fr_FR": "", "nl_NL": "Baz"} Like before, writing False to the field makes it NULL, i.e., False in all languages. However, writing "" to the field makes its value empty in the current language, but does not discard the values in the other languages. Here are examples for a field with translate=xml_translate: NULL {"en_US": "<div>Foo<p>Bar</p></div>", "fr_FR": "<div>Fou<p>Barre</p></div>"} Change for callable(translate) fields: one can now write any value in any language on such a field. The new value will be adapted in all languages, based on the mapping of terms between languages in the old values. Basically the structure of the value must remain the same in all languages, like before. Reading a translated field is now both simpler and faster than the former implementation. We fetch the value of the field in the current language by coalescing its value with the 'en_US' value of the field: SELECT id, COALESCE(name->>'fr_FR', name->>'en_US') AS name ... The raw cache of the field contains either None or a dict which is conceptually a subset of the JSON value in database (except for missing languages). For the sake of simplicity, most cache operations deal with the dict and return the text value in the current language. Trigram indexes have been adapted to the new storing strategy, and should enable to search in any language. Before this change, only the source value of the field ('en_US') could be indexed. Computed stored translated fields are not supported by the framework, because of the complexity of the computation itself: the field would need to be computed in all active languages. We chose to not provide any hook to compute a field in all languages at once, and the framework always invokes a compute method once to recompute it. Code translations are no longer stored into the database. They become static, and are extracted from the PO files when needed. The worker simply uses a cache with extracted code translations for performance. This is reasonable, since fr_FR code translations for all modules takes around 2MB of memory, and the cache can be shared among all registries in the worker. Changing code translations requires to update the corresponding PO file and reloading the worker(s). Performance summary: (+) reading 'model' translated fields is faster (+) reading 'model_terms' translated fields is much faster (no need to inject translations into the source value) (+) searching translated fields with operator 'ilike' is much faster when the field is indexed with 'trigram' (+) updating translated fields requires less ORM flushing (-) importing translations from PO files is 2x slower Some extra fixes: - make field 'name' of ir.actions.actions translated; because of the PG inheritance, this is necessary to make the column definition consistent in all models that inherit from ir.actions.actions. - add some backend API for the web/website client for editing translations - move methods get_field_string() to model ir.model.fields - move _load_module_terms to model ir.module.module - adapt tests in test_impex, test_new_api - because env.lang is injected into SQL queries, its returned value is now guaranteed to correspond to a valid active language or None - remove wizard to insert missing translations (no longer makes sense) task-id: 2081307 Co-authored-by:
Fabien Pinckaers <fp@openerp.com> Co-authored-by:
Raphael Collet <rco@odoo.com>
-