From b25fc507b95e052e72c58b79945d6ad8340599dc Mon Sep 17 00:00:00 2001
From: Florian Mounier
Date: Fri, 28 Jun 2024 11:50:55 +0200
Subject: [PATCH 01/13] [ADD] web_notify_upgrade
---
web_notify_upgrade/README.rst | 80 ++++
web_notify_upgrade/__init__.py | 1 +
web_notify_upgrade/__manifest__.py | 14 +
web_notify_upgrade/models/__init__.py | 1 +
web_notify_upgrade/models/ir_model.py | 60 +++
web_notify_upgrade/readme/CONTRIBUTORS.rst | 3 +
web_notify_upgrade/readme/DESCRIPTION.rst | 3 +
.../static/description/index.html | 424 ++++++++++++++++++
8 files changed, 586 insertions(+)
create mode 100644 web_notify_upgrade/README.rst
create mode 100644 web_notify_upgrade/__init__.py
create mode 100644 web_notify_upgrade/__manifest__.py
create mode 100644 web_notify_upgrade/models/__init__.py
create mode 100644 web_notify_upgrade/models/ir_model.py
create mode 100644 web_notify_upgrade/readme/CONTRIBUTORS.rst
create mode 100644 web_notify_upgrade/readme/DESCRIPTION.rst
create mode 100644 web_notify_upgrade/static/description/index.html
diff --git a/web_notify_upgrade/README.rst b/web_notify_upgrade/README.rst
new file mode 100644
index 000000000000..f71b7b8e8840
--- /dev/null
+++ b/web_notify_upgrade/README.rst
@@ -0,0 +1,80 @@
+==================
+Web Notify Upgrade
+==================
+
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:43d4c2b1f0259f640d095bcf8eb7e5afe9cba9ab249dad54c96068d2624bdec8
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
+ :target: https://github.com/OCA/web/tree/14.0/web_notify_upgrade
+ :alt: OCA/web
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_notify_upgrade
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=14.0
+ :alt: Try me on Runboat
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
+
+The notification will ask the user to refresh the page to get the latest changes.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Akretion
+
+Contributors
+~~~~~~~~~~~~
+
+* `Akretion `_:
+
+ * Florian Mounier
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/web `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_notify_upgrade/__init__.py b/web_notify_upgrade/__init__.py
new file mode 100644
index 000000000000..0650744f6bc6
--- /dev/null
+++ b/web_notify_upgrade/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/web_notify_upgrade/__manifest__.py b/web_notify_upgrade/__manifest__.py
new file mode 100644
index 000000000000..2bfd025f2992
--- /dev/null
+++ b/web_notify_upgrade/__manifest__.py
@@ -0,0 +1,14 @@
+# Copyright 2024 Akretion (http://www.akretion.com).
+# @author Florian Mounier
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+{
+ "name": "Web Notify Upgrade",
+ "summary": "Notify active users when a module is installed or updated",
+ "version": "14.0.1.0.0",
+ "license": "AGPL-3",
+ "depends": ["web_notify"],
+ "author": "Akretion, Odoo Community Association (OCA)",
+ "website": "https://github.com/OCA/web",
+ "installable": True,
+}
diff --git a/web_notify_upgrade/models/__init__.py b/web_notify_upgrade/models/__init__.py
new file mode 100644
index 000000000000..413bb2380140
--- /dev/null
+++ b/web_notify_upgrade/models/__init__.py
@@ -0,0 +1 @@
+from . import ir_model
diff --git a/web_notify_upgrade/models/ir_model.py b/web_notify_upgrade/models/ir_model.py
new file mode 100644
index 000000000000..684bf3623850
--- /dev/null
+++ b/web_notify_upgrade/models/ir_model.py
@@ -0,0 +1,60 @@
+# Copyright 2024 Akretion (http://www.akretion.com).
+# @author Florian Mounier
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+import logging
+
+from odoo import api, models
+
+from odoo.addons.bus.models.bus_presence import AWAY_TIMER, DISCONNECTION_TIMER
+
+_logger = logging.getLogger(__name__)
+
+
+class IrModelData(models.Model):
+ _inherit = "ir.model.data"
+
+ @api.model
+ def _process_end(self, modules):
+ # This function is called at the end of the module installation
+ # only if at least a module has been installed or updated.
+ rv = super()._process_end(modules)
+ self._notify_active_users_of_upgrade()
+ return rv
+
+ def _notify_active_users_of_upgrade(self):
+ # Look for active users
+ active_users = self._get_active_users_to_notify_of_upgrade()
+ if active_users:
+ _logger.info(
+ "Installation detected. Notifying %s active users", len(active_users)
+ )
+ # Notify them
+ active_users.notify_info(**self._get_upgrade_notification_params())
+
+ def _get_active_users_to_notify_of_upgrade(self):
+ """Return the active users that should be notified of the upgrade."""
+ self.env.cr.execute(
+ """
+ SELECT user_id
+ FROM bus_presence
+ WHERE last_poll is not null
+ AND (
+ age(now() AT TIME ZONE 'UTC', last_poll) < interval %s
+ OR age(now() AT TIME ZONE 'UTC', last_presence) < interval %s
+ )
+ """,
+ ("%s seconds" % DISCONNECTION_TIMER, "%s seconds" % AWAY_TIMER),
+ )
+ return self.env["res.users"].browse([res[0] for res in self.env.cr.fetchall()])
+
+ def _get_upgrade_notification_params(self):
+ """Return the parameters to pass to the notify_info method."""
+ return dict(
+ message="Your odoo instance has been upgraded, "
+ "please reload the web page. "
+ ''
+ ' Reload'
+ " ",
+ title="Upgrade Notification",
+ sticky=True,
+ )
diff --git a/web_notify_upgrade/readme/CONTRIBUTORS.rst b/web_notify_upgrade/readme/CONTRIBUTORS.rst
new file mode 100644
index 000000000000..a4d0ad92299d
--- /dev/null
+++ b/web_notify_upgrade/readme/CONTRIBUTORS.rst
@@ -0,0 +1,3 @@
+* `Akretion `_:
+
+ * Florian Mounier
diff --git a/web_notify_upgrade/readme/DESCRIPTION.rst b/web_notify_upgrade/readme/DESCRIPTION.rst
new file mode 100644
index 000000000000..854e257a6c2d
--- /dev/null
+++ b/web_notify_upgrade/readme/DESCRIPTION.rst
@@ -0,0 +1,3 @@
+This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
+
+The notification will ask the user to refresh the page to get the latest changes.
diff --git a/web_notify_upgrade/static/description/index.html b/web_notify_upgrade/static/description/index.html
new file mode 100644
index 000000000000..aab5720bffe5
--- /dev/null
+++ b/web_notify_upgrade/static/description/index.html
@@ -0,0 +1,424 @@
+
+
+
+
+
+Web Notify Upgrade
+
+
+
+
+
Web Notify Upgrade
+
+
+
+
This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
+
The notification will ask the user to refresh the page to get the latest changes.
+
Table of contents
+
+
+
+
Bugs are tracked on GitHub Issues .
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+feedback .
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
This module is part of the OCA/web project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
+
+
+
+
+
From c7057913bbb9ebb5f4929a33c3140363f71fbeb5 Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Thu, 4 Jul 2024 09:22:40 +0000
Subject: [PATCH 02/13] [UPD] Update web_notify_upgrade.pot
---
.../i18n/web_notify_upgrade.pot | 34 +++++++++++++++++++
1 file changed, 34 insertions(+)
create mode 100644 web_notify_upgrade/i18n/web_notify_upgrade.pot
diff --git a/web_notify_upgrade/i18n/web_notify_upgrade.pot b/web_notify_upgrade/i18n/web_notify_upgrade.pot
new file mode 100644
index 000000000000..fc0b462bac97
--- /dev/null
+++ b/web_notify_upgrade/i18n/web_notify_upgrade.pot
@@ -0,0 +1,34 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_notify_upgrade
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: web_notify_upgrade
+#: model:ir.model.fields,field_description:web_notify_upgrade.field_ir_model_data__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: web_notify_upgrade
+#: model:ir.model.fields,field_description:web_notify_upgrade.field_ir_model_data__id
+msgid "ID"
+msgstr ""
+
+#. module: web_notify_upgrade
+#: model:ir.model.fields,field_description:web_notify_upgrade.field_ir_model_data____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: web_notify_upgrade
+#: model:ir.model,name:web_notify_upgrade.model_ir_model_data
+msgid "Model Data"
+msgstr ""
From f9b6a7fb6fc7750a8565aeec8dfd02c663feeede Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Thu, 4 Jul 2024 09:27:51 +0000
Subject: [PATCH 03/13] [BOT] post-merge updates
---
web_notify_upgrade/README.rst | 2 +-
web_notify_upgrade/__manifest__.py | 2 +-
web_notify_upgrade/static/description/icon.png | Bin 0 -> 9455 bytes
web_notify_upgrade/static/description/index.html | 2 +-
4 files changed, 3 insertions(+), 3 deletions(-)
create mode 100644 web_notify_upgrade/static/description/icon.png
diff --git a/web_notify_upgrade/README.rst b/web_notify_upgrade/README.rst
index f71b7b8e8840..b03fd17ecfb8 100644
--- a/web_notify_upgrade/README.rst
+++ b/web_notify_upgrade/README.rst
@@ -7,7 +7,7 @@ Web Notify Upgrade
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:43d4c2b1f0259f640d095bcf8eb7e5afe9cba9ab249dad54c96068d2624bdec8
+ !! source digest: sha256:73f36f681a3bdab0c199d3f256b69f03aba5a56d03e9a35545d14d1992c865bd
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
diff --git a/web_notify_upgrade/__manifest__.py b/web_notify_upgrade/__manifest__.py
index 2bfd025f2992..2c4a2396c84f 100644
--- a/web_notify_upgrade/__manifest__.py
+++ b/web_notify_upgrade/__manifest__.py
@@ -5,7 +5,7 @@
{
"name": "Web Notify Upgrade",
"summary": "Notify active users when a module is installed or updated",
- "version": "14.0.1.0.0",
+ "version": "14.0.1.0.1",
"license": "AGPL-3",
"depends": ["web_notify"],
"author": "Akretion, Odoo Community Association (OCA)",
diff --git a/web_notify_upgrade/static/description/icon.png b/web_notify_upgrade/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/web_notify_upgrade/static/description/index.html b/web_notify_upgrade/static/description/index.html
index aab5720bffe5..0c307119ca94 100644
--- a/web_notify_upgrade/static/description/index.html
+++ b/web_notify_upgrade/static/description/index.html
@@ -366,7 +366,7 @@ Web Notify Upgrade
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:43d4c2b1f0259f640d095bcf8eb7e5afe9cba9ab249dad54c96068d2624bdec8
+!! source digest: sha256:73f36f681a3bdab0c199d3f256b69f03aba5a56d03e9a35545d14d1992c865bd
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
From 2d5e1a4fe97456dcba9e6450b1f4129d85d1e00a Mon Sep 17 00:00:00 2001
From: David Beal
Date: Mon, 5 Aug 2024 20:12:16 +0200
Subject: [PATCH 04/13] [16.0][MIG] web_notify_upgrade
---
web_notify_upgrade/README.rst | 10 +++++-----
web_notify_upgrade/__manifest__.py | 2 +-
web_notify_upgrade/static/description/index.html | 6 +++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/web_notify_upgrade/README.rst b/web_notify_upgrade/README.rst
index b03fd17ecfb8..9346623b2a3e 100644
--- a/web_notify_upgrade/README.rst
+++ b/web_notify_upgrade/README.rst
@@ -17,13 +17,13 @@ Web Notify Upgrade
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
- :target: https://github.com/OCA/web/tree/14.0/web_notify_upgrade
+ :target: https://github.com/OCA/web/tree/16.0/web_notify_upgrade
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_notify_upgrade
+ :target: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_notify_upgrade
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=14.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -43,7 +43,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -75,6 +75,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/web `_ project on GitHub.
+This module is part of the `OCA/web `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_notify_upgrade/__manifest__.py b/web_notify_upgrade/__manifest__.py
index 2c4a2396c84f..24ae27e06544 100644
--- a/web_notify_upgrade/__manifest__.py
+++ b/web_notify_upgrade/__manifest__.py
@@ -5,7 +5,7 @@
{
"name": "Web Notify Upgrade",
"summary": "Notify active users when a module is installed or updated",
- "version": "14.0.1.0.1",
+ "version": "16.0.1.0.0",
"license": "AGPL-3",
"depends": ["web_notify"],
"author": "Akretion, Odoo Community Association (OCA)",
diff --git a/web_notify_upgrade/static/description/index.html b/web_notify_upgrade/static/description/index.html
index 0c307119ca94..35f304af5b6f 100644
--- a/web_notify_upgrade/static/description/index.html
+++ b/web_notify_upgrade/static/description/index.html
@@ -368,7 +368,7 @@ Web Notify Upgrade
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:73f36f681a3bdab0c199d3f256b69f03aba5a56d03e9a35545d14d1992c865bd
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
The notification will ask the user to refresh the page to get the latest changes.
Table of contents
@@ -388,7 +388,7 @@
Bugs are tracked on GitHub Issues .
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback .
+feedback .
Do not contact contributors directly about support or help with technical issues.
@@ -415,7 +415,7 @@
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/web project on GitHub.
+
This module is part of the OCA/web project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
From 54704ee02d150d230fbb85b33f0224215669b155 Mon Sep 17 00:00:00 2001
From: David Beal
Date: Mon, 5 Aug 2024 21:31:58 +0200
Subject: [PATCH 05/13] [16.0] web_notify_upgrade: fr translation
---
web_notify_upgrade/README.rst | 6 ++-
web_notify_upgrade/i18n/fr.po | 44 ++++++++++++++++++
web_notify_upgrade/i18n/it.po | 43 +++++++++++++++++
.../i18n/web_notify_upgrade.pot | 24 ++++++----
web_notify_upgrade/models/ir_model.py | 13 +++---
web_notify_upgrade/readme/DESCRIPTION.rst | 4 ++
.../static/description/index.html | 16 +++++--
.../static/description/notify.png | Bin 0 -> 27309 bytes
8 files changed, 129 insertions(+), 21 deletions(-)
create mode 100644 web_notify_upgrade/i18n/fr.po
create mode 100644 web_notify_upgrade/i18n/it.po
create mode 100644 web_notify_upgrade/static/description/notify.png
diff --git a/web_notify_upgrade/README.rst b/web_notify_upgrade/README.rst
index 9346623b2a3e..55cf2f36c7fb 100644
--- a/web_notify_upgrade/README.rst
+++ b/web_notify_upgrade/README.rst
@@ -7,7 +7,7 @@ Web Notify Upgrade
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:73f36f681a3bdab0c199d3f256b69f03aba5a56d03e9a35545d14d1992c865bd
+ !! source digest: sha256:2eb8752f0e8e35c9d1a164c644532665c2ea80d249dc3a430df2c6579fbdfae1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -32,6 +32,10 @@ This module uses web_notify send a notification to every active users whenever a
The notification will ask the user to refresh the page to get the latest changes.
+
+.. figure:: https://raw.githubusercontent.com/OCA/web/16.0/web_notify_upgrade/static/description/notify.png
+ :alt: Refresh page
+
**Table of contents**
.. contents::
diff --git a/web_notify_upgrade/i18n/fr.po b/web_notify_upgrade/i18n/fr.po
new file mode 100644
index 000000000000..b262d01acac9
--- /dev/null
+++ b/web_notify_upgrade/i18n/fr.po
@@ -0,0 +1,44 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_notify_upgrade
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2024-08-14 16:58+0000\n"
+"Last-Translator: David Beal \n"
+"Language-Team: \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 5.6.2\n"
+
+#. module: web_notify_upgrade
+#: model:ir.model,name:web_notify_upgrade.model_ir_model_data
+msgid "Model Data"
+msgstr "Model Data"
+
+#. module: web_notify_upgrade
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Reload"
+msgstr "Recharger"
+
+#. module: web_notify_upgrade
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Upgrade Notification"
+msgstr "Notification de mise à jour"
+
+#. module: web_notify_upgrade
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Your odoo instance has been upgraded, please reload the web page."
+msgstr "Votre instance odoo a été mise à jour, merci de recharger la page web."
diff --git a/web_notify_upgrade/i18n/it.po b/web_notify_upgrade/i18n/it.po
new file mode 100644
index 000000000000..9eca29655e4a
--- /dev/null
+++ b/web_notify_upgrade/i18n/it.po
@@ -0,0 +1,43 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_notify_upgrade
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-08-12 08:58+0000\n"
+"Last-Translator: mymage \n"
+"Language-Team: none\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 5.6.2\n"
+
+#. module: web_notify_upgrade
+#: model:ir.model,name:web_notify_upgrade.model_ir_model_data
+msgid "Model Data"
+msgstr "Dati modello"
+
+#. module: web_notify_upgrade
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Reload"
+msgstr "Ricarica"
+
+#. module: web_notify_upgrade
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Upgrade Notification"
+msgstr "Aggiorna notifiche"
+
+#. module: web_notify_upgrade
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Your odoo instance has been upgraded, please reload the web page."
+msgstr "L'istanza Odoo è stata aggiornata, ricaricare la pagina web."
diff --git a/web_notify_upgrade/i18n/web_notify_upgrade.pot b/web_notify_upgrade/i18n/web_notify_upgrade.pot
index fc0b462bac97..62a205b52152 100644
--- a/web_notify_upgrade/i18n/web_notify_upgrade.pot
+++ b/web_notify_upgrade/i18n/web_notify_upgrade.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 14.0\n"
+"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -14,21 +14,27 @@ msgstr ""
"Plural-Forms: \n"
#. module: web_notify_upgrade
-#: model:ir.model.fields,field_description:web_notify_upgrade.field_ir_model_data__display_name
-msgid "Display Name"
+#: model:ir.model,name:web_notify_upgrade.model_ir_model_data
+msgid "Model Data"
msgstr ""
#. module: web_notify_upgrade
-#: model:ir.model.fields,field_description:web_notify_upgrade.field_ir_model_data__id
-msgid "ID"
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Reload"
msgstr ""
#. module: web_notify_upgrade
-#: model:ir.model.fields,field_description:web_notify_upgrade.field_ir_model_data____last_update
-msgid "Last Modified on"
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Upgrade Notification"
msgstr ""
#. module: web_notify_upgrade
-#: model:ir.model,name:web_notify_upgrade.model_ir_model_data
-msgid "Model Data"
+#. odoo-python
+#: code:addons/web_notify_upgrade/models/ir_model.py:0
+#, python-format
+msgid "Your odoo instance has been upgraded, please reload the web page."
msgstr ""
diff --git a/web_notify_upgrade/models/ir_model.py b/web_notify_upgrade/models/ir_model.py
index 684bf3623850..d973e4e36bc0 100644
--- a/web_notify_upgrade/models/ir_model.py
+++ b/web_notify_upgrade/models/ir_model.py
@@ -3,7 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
-from odoo import api, models
+from odoo import _, api, models
from odoo.addons.bus.models.bus_presence import AWAY_TIMER, DISCONNECTION_TIMER
@@ -50,11 +50,12 @@ def _get_active_users_to_notify_of_upgrade(self):
def _get_upgrade_notification_params(self):
"""Return the parameters to pass to the notify_info method."""
return dict(
- message="Your odoo instance has been upgraded, "
- "please reload the web page. "
+ message=_(
+ "Your odoo instance has been upgraded, " "please reload the web page."
+ )
+ + " "
''
- ' Reload'
- " ",
- title="Upgrade Notification",
+ ' ' + _("Reload") + "",
+ title=_("Upgrade Notification"),
sticky=True,
)
diff --git a/web_notify_upgrade/readme/DESCRIPTION.rst b/web_notify_upgrade/readme/DESCRIPTION.rst
index 854e257a6c2d..49656f4d69f1 100644
--- a/web_notify_upgrade/readme/DESCRIPTION.rst
+++ b/web_notify_upgrade/readme/DESCRIPTION.rst
@@ -1,3 +1,7 @@
This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
The notification will ask the user to refresh the page to get the latest changes.
+
+
+.. figure:: ../static/description/notify.png
+ :alt: Refresh page
diff --git a/web_notify_upgrade/static/description/index.html b/web_notify_upgrade/static/description/index.html
index 35f304af5b6f..b666ccd0a466 100644
--- a/web_notify_upgrade/static/description/index.html
+++ b/web_notify_upgrade/static/description/index.html
@@ -8,10 +8,11 @@
/*
:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
+:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
+Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
@@ -274,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }
-pre.code .ln { color: grey; } /* line numbers */
+pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
@@ -300,7 +301,7 @@
span.pre {
white-space: pre }
-span.problematic {
+span.problematic, pre.problematic {
color: red }
span.section-subtitle {
@@ -366,11 +367,14 @@ Web Notify Upgrade
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:73f36f681a3bdab0c199d3f256b69f03aba5a56d03e9a35545d14d1992c865bd
+!! source digest: sha256:2eb8752f0e8e35c9d1a164c644532665c2ea80d249dc3a430df2c6579fbdfae1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
The notification will ask the user to refresh the page to get the latest changes.
+
Table of contents
@@ -411,7 +415,9 @@
This module is maintained by the OCA.
-
+
+
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
diff --git a/web_notify_upgrade/static/description/notify.png b/web_notify_upgrade/static/description/notify.png
new file mode 100644
index 0000000000000000000000000000000000000000..d605e3ff894eab41624e6efd61b0b73d56f9c668
GIT binary patch
literal 27309
zcmeFYWl&wswl2Joz=9B1NPyt(?(XjH4hy&7?yf
(7Tklo2MF#G^se{a`|Pt%
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 ?CIV0-*+-SExRL?j5c$lLiim7VtM
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
Date: Wed, 9 Jul 2025 18:05:43 +0200
Subject: [PATCH 06/13] [IMP] web_notify_upgrade: pre-commit execution
---
web_notify_upgrade/README.rst | 30 ++++++++++---------
web_notify_upgrade/pyproject.toml | 3 ++
web_notify_upgrade/readme/CONTRIBUTORS.md | 2 ++
web_notify_upgrade/readme/CONTRIBUTORS.rst | 3 --
web_notify_upgrade/readme/DESCRIPTION.md | 7 +++++
web_notify_upgrade/readme/DESCRIPTION.rst | 7 -----
.../static/description/index.html | 16 +++++-----
7 files changed, 36 insertions(+), 32 deletions(-)
create mode 100644 web_notify_upgrade/pyproject.toml
create mode 100644 web_notify_upgrade/readme/CONTRIBUTORS.md
delete mode 100644 web_notify_upgrade/readme/CONTRIBUTORS.rst
create mode 100644 web_notify_upgrade/readme/DESCRIPTION.md
delete mode 100644 web_notify_upgrade/readme/DESCRIPTION.rst
diff --git a/web_notify_upgrade/README.rst b/web_notify_upgrade/README.rst
index 55cf2f36c7fb..02a946cdd467 100644
--- a/web_notify_upgrade/README.rst
+++ b/web_notify_upgrade/README.rst
@@ -17,24 +17,26 @@ Web Notify Upgrade
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
- :target: https://github.com/OCA/web/tree/16.0/web_notify_upgrade
+ :target: https://github.com/OCA/web/tree/18.0/web_notify_upgrade
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_notify_upgrade
+ :target: https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_notify_upgrade
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=16.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
-This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
+This module uses web_notify send a notification to every active users
+whenever a module has been installed or upgraded.
-The notification will ask the user to refresh the page to get the latest changes.
+The notification will ask the user to refresh the page to get the latest
+changes.
+|image1|
-.. figure:: https://raw.githubusercontent.com/OCA/web/16.0/web_notify_upgrade/static/description/notify.png
- :alt: Refresh page
+.. |image1| image:: https://raw.githubusercontent.com/OCA/web/18.0/web_notify_upgrade/static/description/notify.png
**Table of contents**
@@ -47,7 +49,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -55,19 +57,19 @@ Credits
=======
Authors
-~~~~~~~
+-------
* Akretion
Contributors
-~~~~~~~~~~~~
+------------
-* `Akretion `_:
+- `Akretion `__:
- * Florian Mounier
+ - Florian Mounier
Maintainers
-~~~~~~~~~~~
+-----------
This module is maintained by the OCA.
@@ -79,6 +81,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/web `_ project on GitHub.
+This module is part of the `OCA/web `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/web_notify_upgrade/pyproject.toml b/web_notify_upgrade/pyproject.toml
new file mode 100644
index 000000000000..4231d0cccb3d
--- /dev/null
+++ b/web_notify_upgrade/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["whool"]
+build-backend = "whool.buildapi"
diff --git a/web_notify_upgrade/readme/CONTRIBUTORS.md b/web_notify_upgrade/readme/CONTRIBUTORS.md
new file mode 100644
index 000000000000..3b52e04e621e
--- /dev/null
+++ b/web_notify_upgrade/readme/CONTRIBUTORS.md
@@ -0,0 +1,2 @@
+- [Akretion](https://www.akretion.com):
+ - Florian Mounier
diff --git a/web_notify_upgrade/readme/CONTRIBUTORS.rst b/web_notify_upgrade/readme/CONTRIBUTORS.rst
deleted file mode 100644
index a4d0ad92299d..000000000000
--- a/web_notify_upgrade/readme/CONTRIBUTORS.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-* `Akretion `_:
-
- * Florian Mounier
diff --git a/web_notify_upgrade/readme/DESCRIPTION.md b/web_notify_upgrade/readme/DESCRIPTION.md
new file mode 100644
index 000000000000..1e3a0476e3e7
--- /dev/null
+++ b/web_notify_upgrade/readme/DESCRIPTION.md
@@ -0,0 +1,7 @@
+This module uses web_notify send a notification to every active users
+whenever a module has been installed or upgraded.
+
+The notification will ask the user to refresh the page to get the latest
+changes.
+
+
diff --git a/web_notify_upgrade/readme/DESCRIPTION.rst b/web_notify_upgrade/readme/DESCRIPTION.rst
deleted file mode 100644
index 49656f4d69f1..000000000000
--- a/web_notify_upgrade/readme/DESCRIPTION.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
-
-The notification will ask the user to refresh the page to get the latest changes.
-
-
-.. figure:: ../static/description/notify.png
- :alt: Refresh page
diff --git a/web_notify_upgrade/static/description/index.html b/web_notify_upgrade/static/description/index.html
index b666ccd0a466..6270b0935a02 100644
--- a/web_notify_upgrade/static/description/index.html
+++ b/web_notify_upgrade/static/description/index.html
@@ -369,12 +369,12 @@ Web Notify Upgrade
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:2eb8752f0e8e35c9d1a164c644532665c2ea80d249dc3a430df2c6579fbdfae1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
-This module uses web_notify send a notification to every active users whenever a module has been installed or upgraded.
-The notification will ask the user to refresh the page to get the latest changes.
-
+
+This module uses web_notify send a notification to every active users
+whenever a module has been installed or upgraded.
+The notification will ask the user to refresh the page to get the latest
+changes.
+
Table of contents
@@ -392,7 +392,7 @@
Bugs are tracked on GitHub Issues .
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback .
+feedback .
Do not contact contributors directly about support or help with technical issues.
@@ -421,7 +421,7 @@
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/web project on GitHub.
+
This module is part of the OCA/web project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
From 11952bfcc0c30482e10956307418af4eee95d9eb Mon Sep 17 00:00:00 2001
From: David Beal
Date: Wed, 3 Sep 2025 12:23:02 +0200
Subject: [PATCH 07/13] [MIG] web_notify_upgrade: Migration to 18.0
---
web_notify_upgrade/__manifest__.py | 2 +-
web_notify_upgrade/models/ir_model.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/web_notify_upgrade/__manifest__.py b/web_notify_upgrade/__manifest__.py
index 24ae27e06544..4b38b46129e5 100644
--- a/web_notify_upgrade/__manifest__.py
+++ b/web_notify_upgrade/__manifest__.py
@@ -5,7 +5,7 @@
{
"name": "Web Notify Upgrade",
"summary": "Notify active users when a module is installed or updated",
- "version": "16.0.1.0.0",
+ "version": "18.0.1.0.0",
"license": "AGPL-3",
"depends": ["web_notify"],
"author": "Akretion, Odoo Community Association (OCA)",
diff --git a/web_notify_upgrade/models/ir_model.py b/web_notify_upgrade/models/ir_model.py
index d973e4e36bc0..fdb4e5509290 100644
--- a/web_notify_upgrade/models/ir_model.py
+++ b/web_notify_upgrade/models/ir_model.py
@@ -43,7 +43,7 @@ def _get_active_users_to_notify_of_upgrade(self):
OR age(now() AT TIME ZONE 'UTC', last_presence) < interval %s
)
""",
- ("%s seconds" % DISCONNECTION_TIMER, "%s seconds" % AWAY_TIMER),
+ (f"{DISCONNECTION_TIMER} seconds", f"{AWAY_TIMER} seconds"),
)
return self.env["res.users"].browse([res[0] for res in self.env.cr.fetchall()])
From 783bbb418d5433c6183d811e4cc07775579d0d1e Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Mon, 8 Sep 2025 13:13:39 +0000
Subject: [PATCH 08/13] [UPD] Update web_notify_upgrade.pot
---
web_notify_upgrade/i18n/web_notify_upgrade.pot | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/web_notify_upgrade/i18n/web_notify_upgrade.pot b/web_notify_upgrade/i18n/web_notify_upgrade.pot
index 62a205b52152..68c79cfebbe9 100644
--- a/web_notify_upgrade/i18n/web_notify_upgrade.pot
+++ b/web_notify_upgrade/i18n/web_notify_upgrade.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 16.0\n"
+"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -21,20 +21,17 @@ msgstr ""
#. module: web_notify_upgrade
#. odoo-python
#: code:addons/web_notify_upgrade/models/ir_model.py:0
-#, python-format
msgid "Reload"
msgstr ""
#. module: web_notify_upgrade
#. odoo-python
#: code:addons/web_notify_upgrade/models/ir_model.py:0
-#, python-format
msgid "Upgrade Notification"
msgstr ""
#. module: web_notify_upgrade
#. odoo-python
#: code:addons/web_notify_upgrade/models/ir_model.py:0
-#, python-format
msgid "Your odoo instance has been upgraded, please reload the web page."
msgstr ""
From 2d5d592df8c80512066e9f3aa3ad531151fadaf5 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Mon, 8 Sep 2025 13:18:20 +0000
Subject: [PATCH 09/13] [BOT] post-merge updates
---
web_notify_upgrade/README.rst | 12 ++++++---
.../static/description/index.html | 26 ++++++++++++-------
2 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/web_notify_upgrade/README.rst b/web_notify_upgrade/README.rst
index 02a946cdd467..09e5d119f152 100644
--- a/web_notify_upgrade/README.rst
+++ b/web_notify_upgrade/README.rst
@@ -1,3 +1,7 @@
+.. image:: https://odoo-community.org/readme-banner-image
+ :target: https://odoo-community.org/get-involved?utm_source=readme
+ :alt: Odoo Community Association
+
==================
Web Notify Upgrade
==================
@@ -7,13 +11,13 @@ Web Notify Upgrade
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:2eb8752f0e8e35c9d1a164c644532665c2ea80d249dc3a430df2c6579fbdfae1
+ !! source digest: sha256:c19c68174a60ed18be65dbd1dd4464927509139187f14f42a4c378d48d73312b
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
-.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
@@ -64,9 +68,9 @@ Authors
Contributors
------------
-- `Akretion `__:
+- `Akretion `__:
- - Florian Mounier
+ - Florian Mounier
Maintainers
-----------
diff --git a/web_notify_upgrade/static/description/index.html b/web_notify_upgrade/static/description/index.html
index 6270b0935a02..c9af547f9785 100644
--- a/web_notify_upgrade/static/description/index.html
+++ b/web_notify_upgrade/static/description/index.html
@@ -3,7 +3,7 @@
-Web Notify Upgrade
+README.rst
-
-
Web Notify Upgrade
+
+
+
+
+
+
+
Web Notify Upgrade
-
+
This module uses web_notify send a notification to every active users
whenever a module has been installed or upgraded.
The notification will ask the user to refresh the page to get the latest
@@ -388,7 +393,7 @@
Web Notify Upgrade
-
+
Bugs are tracked on GitHub Issues .
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
@@ -396,15 +401,15 @@
Do not contact contributors directly about support or help with technical issues.
+