Skip to content

[19.0][MIG]: web_m2x_options#3382

Merged
OCA-git-bot merged 79 commits intoOCA:19.0from
Studio73:19.0-mig-web_m2x_options
Apr 22, 2026
Merged

[19.0][MIG]: web_m2x_options#3382
OCA-git-bot merged 79 commits intoOCA:19.0from
Studio73:19.0-mig-web_m2x_options

Conversation

@Alexgars73
Copy link
Copy Markdown

Migration to v19

Nicolas JEUDY and others added 30 commits December 4, 2025 09:28
- 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.
`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% (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/zh_CN/
@pedrobaeza
Copy link
Copy Markdown
Member

Yes

@CRogos
Copy link
Copy Markdown
Contributor

CRogos commented Apr 20, 2026

@Alexgars73 can you do the squash so that we can merge?

manuelregidor and others added 13 commits April 21, 2026 08:42
Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: web-17.0/web-17.0-web_m2x_options
Translate-URL: https://translation.odoo-community.org/projects/web-17-0/web-17-0-web_m2x_options/

[BOT] post-merge updates

[UPD] Update web_m2x_options.pot
…sAvatarField

ListMany2ManyTagsAvatarField already extends from Many2ManyTagsAvatarField
Many2OneReferenceField inherits the props definition from Many2OneField but
does not inherit the prototype methods added via patch() on many2OneField,
including m2o_options_props()

without this patch, calling extractProps() on Many2OneReferenceField leads to
"this.m2o_options_props is not a function" errors because this method is undefined

this fix adds a no-op m2o_options_props() implementation on Many2OneReferenceField
to ensure compatibility and safely bypass the m2o_options_props logic
since it's not relevant for reference fields

[BOT] post-merge updates
Translated using Weblate (Japanese)

Currently translated at 100.0% (2 of 2 strings)

Translation: web-18.0/web-18.0-web_m2x_options
Translate-URL: https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_m2x_options/ja/
@Alexgars73 Alexgars73 force-pushed the 19.0-mig-web_m2x_options branch from 69f58d0 to 32ab325 Compare April 21, 2026 06:43
@Alexgars73
Copy link
Copy Markdown
Author

@pedrobaeza @CRogos done, if you can check if it's correct.

@yankinmax
Copy link
Copy Markdown
Contributor

Hello @OCA/web-maintainers can you pls take a look and possibly trigger merge?

@dreispt dreispt requested a review from njeudy April 21, 2026 19:03
@Yusuke1998
Copy link
Copy Markdown

Ping

@CRogos
Copy link
Copy Markdown
Contributor

CRogos commented Apr 22, 2026

@pedrobaeza can you merge? I don't think @OCA/web-maintainers is working.

@etobella
Copy link
Copy Markdown
Member

/ocabot merge nobump

@OCA-git-bot
Copy link
Copy Markdown
Contributor

This PR looks fantastic, let's merge it!
Prepared branch 19.0-ocabot-merge-pr-3382-by-etobella-bump-nobump, awaiting test results.

@OCA-git-bot OCA-git-bot merged commit a5a4e40 into OCA:19.0 Apr 22, 2026
7 checks passed
@OCA-git-bot
Copy link
Copy Markdown
Contributor

Congratulations, your PR was merged at 3ad4c97. Thanks a lot for contributing to OCA. ❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.