Skip to content

[WIP] [FIX] mail_ux: do not re-render template reports on every composer onchange - #451

Open
jcadhoc wants to merge 1 commit into
ingadhoc:19.0from
adhoc-dev:19.0-h-126274-jc
Open

jcadhoc wants to merge 1 commit into
ingadhoc:19.0from
adhoc-dev:19.0-h-126274-jc

Conversation

@jcadhoc

@jcadhoc jcadhoc commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Qué pasa

mail.compose.message.attachment_ids es un compute store=True, readonly=False. El cliente web lo invalida en cada round-trip de onchange que devuelve alguna de sus dependencias (composition_mode, model, res_domain, res_ids, template_id), aunque el valor no haya cambiado: modified() invalida por nombre de campo, no compara valores.

Cada pase volvía a llamar a _render_qweb_pdf sobre los reportes de la plantilla. Abrir una sola vez el asistente de envío podía disparar varias corridas de wkhtmltopdf, y cada corrida necesita un worker HTTP libre para servirse los CSS del reporte (/web/assets/*report_assets*). En una instancia con pocos workers eso llega a trabar el puerto.

Qué cambia

mail_ux recuerda de qué valores se generaron los adjuntos (attachments_source_key + attachments_source_ids, técnicos) y los reusa cuando son los mismos. Si la plantilla o los registros cambian de verdad, se regeneran como antes.

Los dos campos van invisibles en la vista del asistente a propósito: el cliente tiene que devolverlos en el round-trip para que haya con qué comparar.

Cómo se verifica

Contando llamadas a _render_qweb_pdf sobre el asistente de envío de una orden de compra:

antes después
apertura (first_call) 1 1
onchange(['body']), ['subject'], ['partner_ids'] 0 0
onchange(['template_id']) con el mismo valor 1 0
onchange(['res_ids']), ['composition_mode'], ['model'] 1 c/u 0

Merge

Pide bump: suma un XML de datos sin noupdate.

Referencia interna: https://www.adhoc.inc/odoo/helpdesk.ticket/126274

…change

attachment_ids is a stored compute, so the web client invalidates it on
every onchange round trip that sends back one of its dependencies, even
when the value did not change. Each pass called _render_qweb_pdf again:
opening the send wizard once could run wkhtmltopdf several times, and
every run needs a free HTTP worker to serve itself the report assets.

Remember the values the attachments were generated from and reuse them
when they are the same. Ticket 126274.
@roboadhoc

Copy link
Copy Markdown
Contributor

Pull request status dashboard

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants