Skip to content
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

[16.0][MIG] web_m2x_options: Migration to 16.0 #2446

Merged
merged 73 commits into from
Apr 5, 2023

Conversation

anothingguy
Copy link
Contributor

@anothingguy anothingguy commented Mar 13, 2023

  • in V16, no_color_picker won't be migrated, use native option: no_edit_color instead)
  • in V16, no_open_edit won't be migrated: no_open_edit has the same behavior of no_open in v15 in term of functionality and the code also confirmed that. I'm not sure why we should maintain option no_open_edit so I didn't migrated this option to v16

Nicolas JEUDY and others added 30 commits February 15, 2023 15:13
- 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)
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

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/
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/
Copy link
Contributor

@AungKoKoLin1997 AungKoKoLin1997 left a comment

Choose a reason for hiding this comment

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

Functional Review: It works as expected except "no_open_edit". May be I am missing something when I test. I set up "no_open_edit" to true but it still opens in edit mode. May be because of odoo16 default behavior is in edit mode?

@anothingguy
Copy link
Contributor Author

anothingguy commented Mar 14, 2023

Hi @AungKoKoLin1997 , thanks for your review.
I double checked, no_open_edit has the same behavior as no_open in v15 in term of functionality and the code also confirmed that. I'm not sure why we should maintain option no_open_edit so I didn't migrate this option to v16.
Could you double check no_open_edit in v15. Or maybe I'm wrong somewhere ?

  • Also no_open_edit is not mentioned officially in the module document

}

if (typeof this.props.nodeOptions.limit === "number") {
this.props.searchLimit = this.props.nodeOptions.limit;
Copy link
Member

Choose a reason for hiding this comment

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

The limit option seems to work fine in many2one fields, but not in many2many_tags, this.props.nodeOptions is empty in this widget.
To reproduce in runbot:

  • Remove web_m2x_options.limit parameter
  • edit sale.order form view adding limit in tag_is field
    <field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True, 'limit': 10}"/>

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes, confirmed this issue, I will update soon, thanks

Copy link
Contributor Author

Choose a reason for hiding this comment

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

hi @jesusVMayor, I fixed that issue. Could you take a look it when you have a chance. Thanks in advance

Copy link
Member

Choose a reason for hiding this comment

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

Yeah, thanks for the fix, works fine.

@anothingguy anothingguy changed the title [16.0][MIG] web_m2x_options [16.0][MIG] web_m2x_options: Migration to 16.0 Mar 29, 2023
Copy link
Member

@jesusVMayor jesusVMayor left a comment

Choose a reason for hiding this comment

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

LGTM


Makes many2many_tags and one2many rows buttons that open the linked resource

``no_color_picker`` *boolean* (Default: ``False``) (obselete: use native option: ``no_edit_color`` instead)
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
``no_color_picker`` *boolean* (Default: ``False``) (obselete: use native option: ``no_edit_color`` instead)
``no_color_picker`` *boolean* (Default: ``False``) (obsolete: use native option: ``no_edit_color`` instead)

@OCA-git-bot
Copy link
Contributor

This PR has the approved label and has been created more than 5 days ago. It should therefore be ready to merge by a maintainer (or a PSC member if the concerned addon has no declared maintainer). 🤖

@gurneyalex
Copy link
Member

/ocabot merge nobump

@OCA-git-bot
Copy link
Contributor

This PR looks fantastic, let's merge it!
Prepared branch 16.0-ocabot-merge-pr-2446-by-gurneyalex-bump-nobump, awaiting test results.

@OCA-git-bot OCA-git-bot merged commit 3315986 into OCA:16.0 Apr 5, 2023
@OCA-git-bot
Copy link
Contributor

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

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.

@gurneyalex @pedrobaeza

I am a little bit wondering how this could be merged?

At least the widgets issue is fixed and the JS refactoring looks great.


{
"name": "web_m2x_options",
"version": "16.0.1.1.0",
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't the version be changed to 16.0.1.0.0?

@pedrobaeza
Copy link
Member

/ocabot migration web_m2x_options

@OCA-git-bot OCA-git-bot added this to the 16.0 milestone Apr 21, 2023
@pedrobaeza
Copy link
Member

Well, reviewers not always check all these things, and @gurneyalex probably checked only the approvals without being very picky. They are not very critical things though.

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.