Repository navigation
[20.0][MIG] web_m2x_options: Migration to version 20.0 - #3721
Conversation
- Add static/description/index.html fix: use include instead of extend in js function inheritance. fix: not overwriting the existing object references with the result of the include fix: update name according to new module name. fix: error when displaying many2many field without options defined.
[ADD] support 'no_open_edit' on many2one [FIX] typos
…and make the module installable [MIG] adapt form.js to the new API. [FIX] Fix bug mentioned in pull OCA#262. [MIG] Make the module installable.
…th `options={'open': True}` it always open the first element with this fix it will open the right one
* [FIX][web_m2x_options] Fix Qweb templates.
They were trying to replace non-existing elements, and this was being logged to console:
Can't find "a.oe_m2o_cm_button" when extending template FieldMany2One
Can't find "span.badge" when extending template FieldMany2ManyTag
* Raise version correctly.
* [FIX] Make many2many_tags tag deletion work again
* Correct replacement of event
Instead of overwriting all events from upstream widget, better just overwrite the one you need and inherit the rest.
* fix unecessary calls Do check_access_rights and disable_quick_create calls only once per field.
…ser does not have creation permission.
`web_m2x_options` is supposed to render fields in the context of a form or tree view, where domains can safely be applied because there's a main record that includes a context. However, when installing along with `web_advanced_search_x2x`, they produce an incompatibility when a x2x field's domain is defined and depends on the current record's context, because a search view has no notion of a *current record*. The fix is simple: try to do as usual, and if it fails, try without the field's domain. Without this patch, an exception like this would be raised, i.e. when both addons are installed and you are trying to search project tasks by stage: ``` Error: NameError: name 'project_id' is not defined http://localhost/web/static/lib/py.js/lib/py.js:370# Traceback:# Changes to be committed: PY_ensurepy@http://localhost/web/static/lib/py.js/lib/py.js:370:19# modified: static/src/js/form.js py.evaluate@http://localhost/web/static/lib/py.js/lib/py.js:1340:20# py.evaluate@http://localhost/web/static/lib/py.js/lib/py.js:1397:35 py.evaluate@http://localhost/web/static/lib/py.js/lib/py.js:1409:34 py.eval@http://localhost/web/static/lib/py.js/lib/py.js:1453:16 eval_domains/<@http://localhost/web/static/src/js/framework/pyeval.js:869:39 _.forEach@http://localhost/web/static/lib/underscore/underscore.js:145:9 _.mixin/</_.prototype[name]@http://localhost/web/static/lib/underscore/underscore.js:1484:29 eval_domains@http://localhost/web/static/src/js/framework/pyeval.js:860:5 eval_domains/<@http://localhost/web/static/src/js/framework/pyeval.js:873:39 _.forEach@http://localhost/web/static/lib/underscore/underscore.js:145:9 _.mixin/</_.prototype[name]@http://localhost/web/static/lib/underscore/underscore.js:1484:29 eval_domains@http://localhost/web/static/src/js/framework/pyeval.js:860:5 eval_domains/<@http://localhost/web/static/src/js/framework/pyeval.js:873:39 _.forEach@http://localhost/web/static/lib/underscore/underscore.js:145:9 _.mixin/</_.prototype[name]@http://localhost/web/static/lib/underscore/underscore.js:1484:29 eval_domains@http://localhost/web/static/src/js/framework/pyeval.js:860:5 pyeval@http://localhost/web/static/src/js/framework/pyeval.js:977:16 eval_arg@http://localhost/web/static/src/js/framework/pyeval.js:988:16 ensure_evaluated@http://localhost/web/static/src/js/framework/pyeval.js:1011:21 call@http://localhost/web/static/src/js/framework/data_model.js:56:9 name_search@http://localhost/web/static/src/js/framework/data.js:537:16 get_search_result@http://localhost/web_m2x_options/static/src/js/form.js:130:50 OdooClass.extend/Class.include/</prototype[name]</<@http://localhost/web/static/src/js/framework/class.js:122:35 source@http://localhost/web/static/src/js/views/form_relational_widgets.js:271:17 _search@http://localhost/web/static/lib/jquery.ui/jquery-ui.js:6823:3 $.widget/</proxiedPrototype[prop]</<@http://localhost/web/static/lib/jquery.ui/jquery-ui.js:415:19 search@http://localhost/web/static/lib/jquery.ui/jquery-ui.js:6815:10 $.widget/</proxiedPrototype[prop]</<@http://localhost/web/static/lib/jquery.ui/jquery-ui.js:415:19 $.widget.bridge/$.fn[name]/<@http://localhost/web/static/lib/jquery.ui/jquery-ui.js:508:19 each@http://localhost/web/static/lib/jquery/jquery.js:383:49 each@http://localhost/web/static/lib/jquery/jquery.js:136:24 $.widget.bridge/$.fn[name]@http://localhost/web/static/lib/jquery.ui/jquery-ui.js:494:4 render_editable/<@http://localhost/web/static/src/js/views/form_relational_widgets.js:189:21 dispatch@http://localhost/web/static/lib/jquery/jquery.js:4640:50 add/elemData.handle@http://localhost/web/static/lib/jquery/jquery.js:4309:41 ```
web_m2x_options: Fix usage for non-admins web_m2x_options: Reduce rpc calls web_m2x_options: Update manifest and readme
Currently translated at 91.7% (11 of 12 strings) Translation: web-11.0/web-11.0-web_m2x_options Translate-URL: https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_m2x_options/pt_BR/
The method `_onOpenColorPicker` is defined on `FormFieldMany2ManyTags`, not in `FieldMany2ManyTags`, so it can only be called on its descendants.
Otherwise, clicking on a `many2many_tags` tag when found in a tree view produces an error such as:
TypeError: self._onOpenColorPicker is not a function
http://localhost/web_m2x_options/static/src/js/form.js:354
Rastreo de error:
_onOpenBadge@http://localhost/web_m2x_options/static/src/js/form.js:354:17
proxy/<@http://localhost/web/static/src/js/core/mixins.js:279:20
dispatch@http://localhost/web/static/lib/jquery/jquery.js:4640:50
add/elemData.handle@http://localhost/web/static/lib/jquery/jquery.js:4309:41
(cherry picked from commit ddbbe81)
Currently translated at 91.7% (11 of 12 strings) Translation: web-12.0/web-12.0-web_m2x_options Translate-URL: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_m2x_options/fr/
Currently translated at 100.0% (12 of 12 strings) Translation: web-12.0/web-12.0-web_m2x_options Translate-URL: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_m2x_options/fr/
Currently translated at 100.0% (12 of 12 strings) Translation: web-12.0/web-12.0-web_m2x_options Translate-URL: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_m2x_options/pt_BR/
Currently translated at 100.0% (2 of 2 strings) Translation: web-19.0/web-19.0-web_m2x_options Translate-URL: https://translation.odoo-community.org/projects/web-19-0/web-19-0-web_m2x_options/sl/
Rename the m2o_options_props* functions to m2x_options_props* to reuse them in both many2one and many2many fields. Override the extractM2OFieldProps function to extend the coverage to components that inherit from Many2one. Most of them now use buildM2OFieldDescription and extractM2OFieldProps. The Many2OneReferenceField and KanbanMany2One fields now work, so remove them from the roadmap. Fix loadOptionsSource: options now return a structure where the record is available at option.data.record instead of option.value. Colors are no longer working; this change may also be needed in v19.
b8eeede to
6aaeb62
Compare
CRogos
left a comment
There was a problem hiding this comment.
LGTM, but not tested every single setting.
There are a lot of changes :) . Did you do everything by your own or as AI involved? In this case "Assisted-by: XYZ" is missing in the commit message.
I think the added tests could also be merged in the migration commit?
Not sure if this warning in the logs of the tests is relevant?
2026-10-15 16:39:02,695 319 WARNING odoo odoo.addons.web_m2x_options.tests.test_js.TestHoot.test_hoot_web_m2x_options: Killing chrome descendants-or-self of 331: 5 remaining
- chrome (zombie)
- chrome (zombie)
- chrome (zombie)
- chrome (zombie)
- chrome (zombie)
|
/ocabot migration web_m2x_options |
Since OCA/oca-ci#116, modules marked as auto_install are no longer installed by oca-ci. If a module runs JavaScript tests and html_editor is not installed, a warning is displayed and the CI fails. More details: OCA/multi-company#1067 (comment) This dependency should be removed if this commit is merged: odoo/odoo@20771f3 WARNING odoo odoo.addons.base.models.assetsbundle: Error: argument $color of rgba($color, $alpha) must be a color
In this case, I made the changes myself, not with AI. If you look closely, the relevant change is this one: 44cf5e2
I left them in a separate commit in case someone wants to backport the tests to another branch, but if you want, I can squash them into the migration commit.
It's not relevant; |
d0d59ee to
936c4f5
Compare
chienandalu
left a comment
There was a problem hiding this comment.
Tested in runbot with several cases. Superb work as always!
|
/ocabot merge nobump |
|
On my way to merge this fine PR! |
|
Congratulations, your PR was merged at f4da0c7. Thanks a lot for contributing to OCA. ❤️ |
m2o_options_props*functions tom2x_options_props*to reuse them in bothmany2oneandmany2manyfields.extractM2OFieldPropsfunction to extend the coverage to components that inherit fromMany2one. Most of them now usebuildM2OFieldDescriptionandextractM2OFieldProps. TheMany2OneReferenceFieldandKanbanMany2Onefields now work, so remove them from the roadmap.loadOptionsSource: options now return a structure where the record is available atoption.data.recordinstead ofoption.value. Colors are no longer working; this change may also be needed in v19.TT64893
@Tecnativa @pedrobaeza @CarlosRoca13 @CRogos could you please review this?