Skip to content

Conversation

@Alexgars73
Copy link

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/
JordiMForgeFlow and others added 11 commits December 4, 2025 09:28
…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
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
Copy link
Author

@carlos-lopez-tecnativa @CRogos could you review it please?

@Alexgars73 Alexgars73 changed the title [19.0][MIG]: web m2x options [19.0][MIG]: web_m2x_options Dec 4, 2025
Copy link
Contributor

@CRogos CRogos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Alexgars73 I've tested on the res_partner form and the system parameter 'web_m2x_options.create' and it worked for the country and tags field, but not for the res_partner_many2one widget
image

The "web_m2x_options.limit" setting and 'limit' option is working on the tags field, but did not work for country and parent_id (res_partner_many2one widget
).

@Alexgars73
Copy link
Author

@CRogos do we have the same problem in v18 and v17? Thanks for the review

@CRogos
Copy link
Contributor

CRogos commented Dec 5, 2025

@Alexgars73 In v18 web_m2x_options.limit and web_m2x_options.create is working on these fields.

@Alexgars73 Alexgars73 force-pushed the 19.0-mig-web_m2x_options branch 2 times, most recently from ad11744 to 876cb31 Compare December 9, 2025 14:31
@Alexgars73
Copy link
Author

@CRogos i made some changes to fix the problems, I've also removed the "search more" feature, since Odoo seems to have removed it. Could you confirm if this makes sense?

Copy link
Contributor

@CRogos CRogos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can confirm the limit, create, create_edit system paramters are now working.

The limit option on the parent_id (widget: res_partner_many2one) is not working. When I change the value to options="{'limit':2}" the global limit is taken. Same on country_id, but on the category_id widget="many2many_tags") the limit option is working.

I also realized that the create + create and edit on country is visible, which is not the case when this module is not installed (this means that the odoo native options are not taken into account: options="{&quot;no_open&quot;: True, &quot;no_create&quot;: True}"):

image

The search more option controls this field in Odoo 17. If there are more results (in this screenshot limit=3), the show more option is displayed (or not if option is set to False)
image

Thank you for your work so fare.

@Alexgars73 Alexgars73 force-pushed the 19.0-mig-web_m2x_options branch from 876cb31 to 4c272f2 Compare December 11, 2025 14:52
@CRogos
Copy link
Contributor

CRogos commented Dec 12, 2025

The limit attribute in the xml is now working for category_id and parent_id, but not for country_id and county_id.

@Alexgars73 Alexgars73 force-pushed the 19.0-mig-web_m2x_options branch from 4c272f2 to a69e7b2 Compare December 15, 2025 15:28
@Alexgars73
Copy link
Author

Alexgars73 commented Dec 16, 2025

@CRogos I made some changes to correct that.
What I mean by "search more" is that Odoo versions prior to 19 allowed you to select the option to search more in the autocomplete feature, but this has now been removed, so in my opinion, this feature shouldn't be included in the migration.

V18:
image

V19:
image

This is the commit where is deleted: https://github.com/odoo/odoo/blob/0ecaa6e4c359681daf90c1757bcf71ba5e4d305c/addons/web/static/src/views/fields/relational_utils.js

@CRogos
Copy link
Contributor

CRogos commented Dec 17, 2025

I think this is still possible to select, as long there is one result... but not sure if this is needed to be configurable.
image

The other two findings above on the xml options are still not fixed.

@Alexgars73
Copy link
Author

@CRogos Yes, it is possible to search more that is right, but what I’m referring to is that Odoo wants this to be not configurable. On the other hand, I tested and the limit option in the settings seems good. Could you tell me which field you tested? Many thanks.

@CRogos
Copy link
Contributor

CRogos commented Dec 18, 2025

@Alexgars73 I've also retested the limit on country_id and county_id and you are right, this is working correct. Probably I've forgot a reload last time.

I also realized that the create + create and edit on country is visible, which is not the case when this module is not installed (this means that the odoo native options are not taken into account: options="{&quot;no_open&quot;: True, &quot;no_create&quot;: True}"):

image

The on the country_id field on contact, there is a no_create: True set in the options. Without web_m2x_option, there is no create shown to the user on this field. So this module has the effect that the native options do not work anymore.

image

@Alexgars73 Alexgars73 force-pushed the 19.0-mig-web_m2x_options branch from a69e7b2 to eb7e307 Compare December 18, 2025 14:31
@Alexgars73
Copy link
Author

Hello @CRogos i made some changes to correct that could you review now? Thanks.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.