-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
[19.0][MIG]: web_m2x_options #3382
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 19.0
Are you sure you want to change the base?
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% (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/
… and Many2ManyTagsAvatarField
…sAvatarField ListMany2ManyTagsAvatarField already extends from Many2ManyTagsAvatarField
…ify related code.
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/
|
@carlos-lopez-tecnativa @CRogos could you review it please? |
CRogos
left a comment
There was a problem hiding this 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

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
).
|
@CRogos do we have the same problem in v18 and v17? Thanks for the review |
|
@Alexgars73 In v18 web_m2x_options.limit and web_m2x_options.create is working on these fields. |
ad11744 to
876cb31
Compare
|
@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? |
CRogos
left a comment
There was a problem hiding this 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="{"no_open": True, "no_create": True}"):
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)

Thank you for your work so fare.
876cb31 to
4c272f2
Compare
|
The limit attribute in the xml is now working for category_id and parent_id, but not for country_id and county_id. |
4c272f2 to
a69e7b2
Compare
|
@CRogos I made some changes to correct that. This is the commit where is deleted: https://github.com/odoo/odoo/blob/0ecaa6e4c359681daf90c1757bcf71ba5e4d305c/addons/web/static/src/views/fields/relational_utils.js |
|
@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. |
|
@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.
The on the country_id field on contact, there is a
|
a69e7b2 to
eb7e307
Compare
|
Hello @CRogos i made some changes to correct that could you review now? Thanks. |




Migration to v19