Wednesday, January 14, 2026
7 changes · 17.0
Resolved issues and error corrections
This update addresses a rare technical issue where a variable within the Odoo mail system was sometimes undefined, leading to potential instability. This fix ensures the mail functionality operates reliably in all circumstances, improving overall system stability. The change is a minor correction to prevent unexpected errors.
Original PR description
In rare cases a variable is not defined.
This update resolves an issue where the save and cancel buttons in the report editor's WYSIWYG interface were difficult to see due to insufficient contrast. The change improves the visibility of these buttons, ensuring a better user experience for creating and editing reports. This addresses a minor usability concern.
Original PR description
Before this PR, the save and cancel button could not be seen properly, now the contrast has been improved. | Before | After | |--------|--------| | <img width="1056" height="97" alt="Screenshot 2026-01-08 at 11 00 30" src="https://github.com/user-attachments/assets/9b03a220-5537-4f6c-a7e2-a6fa3a4da75a" /> | <img width="1056" height="97" alt="Screenshot 2026-01-08 at 11 00 20" src="https://github.com/user-attachments/assets/cb4a868d-e2ab-429d-8588-a92c4e1e170e" /> | task-5401415
This update addresses a potential issue where long email display names could cause emails to be incorrectly formatted, leading to problems with email delivery and folding. The fix ensures that display names are properly quoted in email headers, maintaining RFC compliance and preventing misinterpretation of the email message. This ensures reliable email communication for our users.
Original PR description
In certain edge-case, when having long display names in an email address, the standard mail library in Python used to have a bug were it would remove the quotes in the display name of the email…
In certain edge-case, when having long display names in an email address, the standard mail library in Python used to have a bug were it would remove the quotes in the display name of the email address and lead to miss-folded header values in the final email after serialization of the message object for SMTP sending. See cpython#80222. While a fix was deployed in recent Python versions and backported, given it's non-critical nature, it is not backported my default in Debian/Ubuntu distribution for Python versions <3.13. This means that as long as the minimal supported version for Odoo is below 3.13, we will need to pre-emptively prevent this issues with an Odoo side fix. ## Bug description: 1) Create a contact with a very long display name: `A Name That Is Extremely Long And Will Force The Header Folding Mechanism To Break The Quotes, Which Is The Bug We Are Testing` 2) Send an email message to this contact (capture with a mailcatcher) 3) Analyse the "TO" header an notice that it's miss-folded and RFC non compliant ``` To: A Name That Is Extremely Long And Will Force The Header Folding Mechanism To Break The Quotes, Which Is The Bug We Are Testing <test@example.com> ``` Notice that the quotes were wrongly removed, now the single email is interpreted as multiple ones due to the non-quoted commas. ## After this fix: ``` To: "A Name That Is Extremely Long And Will Force The Header Folding Mec..." <test@example.com> ``` OPW-4988762 BPO-36041 BPO-44637
This update resolves an issue where Odoo encountered errors when processing emails with attachment content types incorrectly identified as '*/*'. To avoid blocking legitimate emails, the system now defaults to 'application/octet-stream' for these cases, ensuring email processing continues smoothly. The change is a minor fix to improve email reliability.
Original PR description
In some rare cases it would seem that some systems construct emails with attachments reporting `*/*` as the Content-Type. While trying to parse such content in Odoo, it causes issues with the…
In some rare cases it would seem that some systems construct emails with attachments reporting `*/*` as the Content-Type. While trying to parse such content in Odoo, it causes issues with the standard CPython email library, as no standard handler exists for '*/*' content-types: Example error: ``` File "/usr/lib/python3.13/email/contentmanager.py", line 25, in get_content raise KeyError(content_type) KeyError: '*/*' ``` This is not compliant with valid MIME types defined in RFC2046/section-3, but in real life scenarios, blocking the processing of an incoming email in Odoo because of this might be excessive. While not a perfect solution, we will assume that attachments falsly reported as `*/*` are to be processed as 'application/octet-stream' content types. This should cover most use-cases, and if it still fails, we will consider that it's up to the original email sender to be RFC compliant. OPW-5425093 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242193
This update fixes an issue where menu entries were incorrectly pointing to the latest page after multiple pages with the same name were created. Now, menu updates only occur when a new page is created and no other page is already associated with that menu entry, ensuring accurate page linking.
Original PR description
With commit 19302cd40347065fcd937bd54e6dce27fe4940cc, when a page is created, menu entries with a url corresponding to the created page are updated to set their `page_id` to the new page. The update may also be triggered when creating several pages with the same name in a row. This commit updates a menu entry on page creation only if no page were already associated to the menu. Steps to reproduce: - Create a new page, call it "test" (will be available on `/test`) - Create a new page, call it "test" (will be available on `/test-1`) - Go to editor menu - Bug: both entries point to `/test-1` - Create a new page, call it "test" (will be available on `/test-2`) - Go to editor menu - Bug: the first one (and the new one) is pointing now to `/test-2` task-5186653 Forward-Port-Of: odoo/odoo#243312
This update resolves a migration issue that prevented the Italian accounting module (l10n_it) from updating correctly from version 16.0. The fix adds a missing column, 'l10n_it_exempt_reason', which was required for the migration process to complete successfully. This ensures a smooth upgrade to the latest Odoo version.
Original PR description
Migration from 16.0 fails because l10n_it_exempt_reason column does not exist
This update resolves a crash in the Belgian Intrastat report caused by an error in the underlying SQL query. The fix adds a required alias to a subquery, ensuring the report can generate accurate data and run reliably. This improves the stability and usability of the Intrastat reporting feature for Belgian businesses.
Original PR description
Steps to reproduce:
1. Install l10n_be_intrastat.
2. Switch to a Belgian company.
3. Open the Intrastat report.
4. Enable “Intrastat (Services F01DGS) (BE)” from the report options.
5. Switch to the Intrastat (Services F01DGS) (BE) report.
Issue:
The Intrastat report crashes with:
```py
psycopg2.errors.SyntaxError: subquery in FROM must have an alias
LINE 28:
FROM (
^
HINT: For example, FROM (SELECT ...) [AS] foo.
```
Cause:
The error is raised when executing the UNION query in _dynamic_lines_generator(), which combines the SQL queries returned by _build_query_group() for each column group.
_build_query_group() builds a SQL query using a subquery returned by _prepare_query() directly in the FROM clause without providing an explicit alias.
Fix:
Wrap the inner query in parentheses and add an explicit alias in the FROM clause to generate valid SQL and prevent the report from crashing.
opw-5410422