From 2f90eabf6d7ee98f8e6bb985e6b97e84e6e66f39 Mon Sep 17 00:00:00 2001 From: Martin Quinteros Date: Thu, 1 Oct 2026 13:35:19 +0000 Subject: [PATCH 1/4] [FIX] mail_ux: reuse the pending initial onchange of the mail composer While the composer dialog is still loading, any overlay change (for example a tooltip shown or hidden) re-renders the overlay container. Owl cancels the pending dialog and builds it again, which sends the same initial onchange once more. Each of those requests renders the template reports, so a single opening can render the PDF several times in parallel and keep the workers busy. An identical initial onchange of mail.compose.message now gets the result of the request already in flight instead of sending a new one. closes ingadhoc/miscellaneous#457 X-original-commit: bdf0d6e22ec82491b31daeec726d7b678262d331 Signed-off-by: Juan Carreras Signed-off-by: Filoquin adhoc --- mail_ux/__manifest__.py | 1 + mail_ux/static/src/views/composer_onchange.js | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 mail_ux/static/src/views/composer_onchange.js diff --git a/mail_ux/__manifest__.py b/mail_ux/__manifest__.py index 0ed1d1f7..44ec6876 100644 --- a/mail_ux/__manifest__.py +++ b/mail_ux/__manifest__.py @@ -30,6 +30,7 @@ "assets": { "web.assets_backend": [ "mail_ux/static/src/core/common/**/*", + "mail_ux/static/src/views/composer_onchange.js", ], }, "depends": [ diff --git a/mail_ux/static/src/views/composer_onchange.js b/mail_ux/static/src/views/composer_onchange.js new file mode 100644 index 00000000..86a71d54 --- /dev/null +++ b/mail_ux/static/src/views/composer_onchange.js @@ -0,0 +1,27 @@ +import { ORM } from "@web/core/orm_service"; +import { patch } from "@web/core/utils/patch"; + +// The composer dialog is rebuilt when an overlay (e.g. a tooltip) changes while it loads, +// which sends the same initial onchange again: reuse the pending one. +const pendingComposerOnchanges = new Map(); + +patch(ORM.prototype, { + call(model, method, args = [], kwargs = {}) { + const isInitialComposerOnchange = + model === "mail.compose.message" && + method === "onchange" && + Array.isArray(args[2]) && + !args[2].length; + if (!isInitialComposerOnchange) { + return super.call(...arguments); + } + const key = JSON.stringify([args, kwargs]); + let prom = pendingComposerOnchanges.get(key); + if (!prom) { + prom = super.call(...arguments); + pendingComposerOnchanges.set(key, prom); + prom.finally(() => pendingComposerOnchanges.delete(key)).catch(() => {}); + } + return prom.then((result) => structuredClone(result)); + }, +}); From a5d33f9c2e42f3fc983e84bbe34d5fdd5e5a04f8 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 2 Oct 2026 17:39:01 +0000 Subject: [PATCH 2/4] Added translation using Weblate (Spanish) --- account_reconcile_bg/i18n/es.po | 104 ++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 account_reconcile_bg/i18n/es.po diff --git a/account_reconcile_bg/i18n/es.po b/account_reconcile_bg/i18n/es.po new file mode 100644 index 00000000..bc0aa30d --- /dev/null +++ b/account_reconcile_bg/i18n/es.po @@ -0,0 +1,104 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_reconcile_bg +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-06-01 12:16+0000\n" +"PO-Revision-Date: 2026-06-01 12:16+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\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" + +#. module: account_reconcile_bg +#: model:ir.model,name:account_reconcile_bg.model_bg_job +msgid "Background Job" +msgstr "" + +#. module: account_reconcile_bg +#. odoo-python +#: code:addons/account_reconcile_bg/models/account_bank_statement_line.py:0 +msgid "Bank Reconciliation: %s" +msgstr "" + +#. module: account_reconcile_bg +#: model:ir.model,name:account_reconcile_bg.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "" + +#. module: account_reconcile_bg +#. odoo-python +#: code:addons/account_reconcile_bg/models/account_bank_statement_line.py:0 +msgid "" +"Bank reconciliation completed successfully:
%s" +msgstr "" + +#. module: account_reconcile_bg +#. odoo-python +#: code:addons/account_reconcile_bg/models/account_bank_statement_line.py:0 +msgid "" +"Bank reconciliation failed:
%s

Error: %s" +msgstr "" + +#. module: account_reconcile_bg +#. odoo-python +#: code:addons/account_reconcile_bg/models/account_bank_statement_line.py:0 +msgid "" +"Cannot modify payment lines that are being reconciled in background. Please wait until the reconciliation process is complete.\n" +"Journal Entry (id): %(entry)s (%(id)s)" +msgstr "" + +#. module: account_reconcile_bg +#: model:ir.model.fields,field_description:account_reconcile_bg.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_reconcile_bg.field_account_move_line__display_name +#: model:ir.model.fields,field_description:account_reconcile_bg.field_bg_job__display_name +msgid "Display Name" +msgstr "" + +#. module: account_reconcile_bg +#: model:ir.model.fields,field_description:account_reconcile_bg.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_reconcile_bg.field_account_move_line__id +#: model:ir.model.fields,field_description:account_reconcile_bg.field_bg_job__id +msgid "ID" +msgstr "" + +#. module: account_reconcile_bg +#: model:ir.model.fields,help:account_reconcile_bg.field_account_bank_statement_line__reconciliation_in_background +#: model:ir.model.fields,help:account_reconcile_bg.field_account_move_line__reconciliation_in_background +msgid "Indicates that this line is being reconciled in background" +msgstr "" + +#. module: account_reconcile_bg +#: model:ir.model,name:account_reconcile_bg.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: account_reconcile_bg +#: model:ir.model.fields,field_description:account_reconcile_bg.field_account_bank_statement_line__reconciliation_in_background +#: model:ir.model.fields,field_description:account_reconcile_bg.field_account_move_line__reconciliation_in_background +msgid "Reconciliation in Background" +msgstr "" + +#. module: account_reconcile_bg +#. odoo-python +#: code:addons/account_reconcile_bg/models/account_bank_statement_line.py:0 +msgid "" +"This reconciliation is already being processed in background. Please wait " +"until it finishes." +msgstr "" + +#. module: account_reconcile_bg +#. odoo-python +#: code:addons/account_reconcile_bg/models/account_bank_statement_line.py:0 +msgid "" +"This reconciliation is being processed in background. You will be notified " +"when it's done." +msgstr "" From 40467ab449d3cb3ea7eaf06d5cbcc7cfd2b9e8fc Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 2 Oct 2026 17:39:03 +0000 Subject: [PATCH 3/4] Added translation using Weblate (Spanish) --- portal_ux/i18n/es.po | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 portal_ux/i18n/es.po diff --git a/portal_ux/i18n/es.po b/portal_ux/i18n/es.po new file mode 100644 index 00000000..2d261cc1 --- /dev/null +++ b/portal_ux/i18n/es.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * portal_ux +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-22 13:48+0000\n" +"PO-Revision-Date: 2026-07-22 13:48+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\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" + +#. module: portal_ux +#: model:ir.model.fields,field_description:portal_ux.field_portal_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: portal_ux +#: model_terms:ir.ui.view,arch_db:portal_ux.wizard_view +msgid "Grant Access to All" +msgstr "" + +#. module: portal_ux +#: model:ir.model,name:portal_ux.model_portal_wizard +msgid "Grant Portal Access" +msgstr "" + +#. module: portal_ux +#: model:ir.model.fields,field_description:portal_ux.field_portal_wizard__id +msgid "ID" +msgstr "" + +#. module: portal_ux +#: model_terms:ir.ui.view,arch_db:portal_ux.wizard_view +msgid "" +"This button will grant access to all contacts with a valid email address." +msgstr "" From f9b6e2df0d319acad1df9ceb1fce3eff01ad8344 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 2 Oct 2026 17:39:04 +0000 Subject: [PATCH 4/4] Added translation using Weblate (Spanish) --- whatsapp_ux/i18n/es.po | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 whatsapp_ux/i18n/es.po diff --git a/whatsapp_ux/i18n/es.po b/whatsapp_ux/i18n/es.po new file mode 100644 index 00000000..0186c98e --- /dev/null +++ b/whatsapp_ux/i18n/es.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * whatsapp_ux +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-23 15:36+0000\n" +"PO-Revision-Date: 2026-07-23 15:36+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\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" + +#. module: whatsapp_ux +#: model:ir.model.fields,help:whatsapp_ux.field_whatsapp_template__bulk_send_action +msgid "" +"Automatically create a one-click bulk send server action on the list view of" +" this template's model once the template is approved. The action reuses the " +"native WhatsApp batch queue, so it sends the template to every selected " +"record at once." +msgstr "" + +#. module: whatsapp_ux +#: model:ir.model.fields,field_description:whatsapp_ux.field_whatsapp_template__bulk_send_action +msgid "Bulk Send Action" +msgstr "" + +#. module: whatsapp_ux +#: model:ir.model.fields,field_description:whatsapp_ux.field_whatsapp_template__display_name +msgid "Display Name" +msgstr "" + +#. module: whatsapp_ux +#: model:ir.model.fields,field_description:whatsapp_ux.field_whatsapp_template__id +msgid "ID" +msgstr "" + +#. module: whatsapp_ux +#. odoo-python +#: code:addons/whatsapp_ux/models/whatsapp_template.py:0 +msgid "Send by WhatsApp: %s" +msgstr "" + +#. module: whatsapp_ux +#: model:ir.model,name:whatsapp_ux.model_whatsapp_template +msgid "WhatsApp Template" +msgstr ""