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

[18.0][MIG] web_notify: Migration to 18.0 #2956

Merged
merged 73 commits into from
Oct 23, 2024

Conversation

trisdoan
Copy link
Contributor

@trisdoan trisdoan commented Oct 14, 2024

This change

  • _sendmany() was removed in odoo/odoo@432e375. As consequences, take advantage of _bus_send, which was introduced in odoo/odoo@432e375, as it's claimed to be more secured and simpler.

  • Took this chance to refactor the notification service

    1. With _bus_send, payload passed to displaywebNotification is an object. In other words, the method processes 1 notification at a time.

    2. As notificationService originally close the notification after 4s, in here, there is no need to do it from our side.

      • Also, the timeout mechanism introduced in 16.0 does not work properly. The notification is never added to webNotifTimeouts object

Result

web_notify_18.webm

lmignon and others added 30 commits October 14, 2024 08:53
This technical module allows you to send instant notification messages from the server to the user in live.
Fix a check when comparing a user count with items within a mock call.

The previous method was succeeding by pure luck because OCA test
databases contain 2 users, which happens to be the amount of items
within a mock "call_args" (it contains args + kwargs).
- Use the 'session' class of the JS Framework (session no lounger bound
to web client)
- Test change: compare emitted & received messages based on content, not
order. Using string comparison raises false positives.
Currently translated at 100,0% (5 of 5 strings)

Translation: web-11.0/web-11.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_notify/pt_BR/
Currently translated at 40.0% (2 of 5 strings)

Translation: web-11.0/web-11.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_notify/da/
Only the admin user (sudo) is allowed to send notifications to other
users. The normal users can only send notifications to themselves.

This is to prevent attackers to craft malicious notifications and send
them to other users using RPC.

Correction based on the idea of @hbrunn
Add self-test buttons in demo environment,
Updated readme to show how to test it.
Add buttons to users form
Do not rely on SUPERUSER_ID and avoid getattr usage
Updated by Update PO files to match POT (msgmerge) hook in Weblate.
* [ADD]: all available bootstrap notifications (success/danger/warning/info/default)
* [IMP] use black color for text for default notification.
* [FIX] reverted require string for `bus.Longpolling` and rename `on_message_received` to `on_message` to prevent collisions.
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: web-12.0/web-12.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_notify/
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: web-12.0/web-12.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_notify/
It seems besides the custom channels provided in this addon it also catches messages from other channels. E.g. in this case it seems the void popup is triggered by these activity creation bus messages.

**Steps to reproduce**

Odoo commit: could reproduce on 5e8b667951 and 4da82776ff
OCA/web commit: 2465278

* Install crm and web_notify modules
* Create an activity for yourself (tried for admin user)
* Empty popup appears

**Attempt to solve**

It seems the bus handles all messages non exclusively. I've hacked in a conditional to handle only messages from web_notify addon, but its unclear wether this does not break something else.
Currently translated at 100.0% (18 of 18 strings)

Translation: web-12.0/web-12.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_notify/pt_BR/
Currently translated at 100.0% (18 of 18 strings)

Translation: web-12.0/web-12.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_notify/zh_CN/
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: web-13.0/web-13.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-13-0/web-13-0-web_notify/
Includes some manual fixes to silent ESLint warnings.
Currently translated at 100.0% (18 of 18 strings)

Translation: web-13.0/web-13.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-13-0/web-13-0-web_notify/de/
OCA-git-bot and others added 17 commits October 14, 2024 08:53
Currently translated at 100.0% (18 of 18 strings)

Translation: web-16.0/web-16.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_notify/it/
Currently translated at 100.0% (18 of 18 strings)

Translation: web-16.0/web-16.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_notify/pt_BR/
When trying to use the notify function that comes from a normal user with sudo flag enabled, it wasn't letting the user access it. Adding the su flag to the check should allow sudo users using this feature.
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: web-16.0/web-16.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_notify/
Currently translated at 100.0% (19 of 19 strings)

Translation: web-16.0/web-16.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_notify/it/
Currently translated at 100.0% (19 of 19 strings)

Translation: web-16.0/web-16.0-web_notify
Translate-URL: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_notify/pt_BR/
- We can now set a button name to the notification action.
- We can set an icon button as well.
- After the button is clicked, the notification gets closed.
@trisdoan trisdoan mentioned this pull request Oct 14, 2024
24 tasks
Copy link
Member

@chienandalu chienandalu left a comment

Choose a reason for hiding this comment

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

Test and code review. Thanks! 👍

@pedrobaeza
Copy link
Member

/ocabot migration web_notify

@OCA-git-bot OCA-git-bot added this to the 18.0 milestone Oct 14, 2024
@pedrobaeza
Copy link
Member

/ocabot merge nobump

@OCA-git-bot
Copy link
Contributor

On my way to merge this fine PR!
Prepared branch 18.0-ocabot-merge-pr-2956-by-pedrobaeza-bump-nobump, awaiting test results.

@OCA-git-bot OCA-git-bot merged commit cd3f8f7 into OCA:18.0 Oct 23, 2024
5 of 7 checks passed
@OCA-git-bot
Copy link
Contributor

Congratulations, your PR was merged at 1f0db64. 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.