Saturday, July 25, 2026
4 changes · saas-19.4
Resolved issues and error corrections
It currently deleted the inner mail.message, while it should actually remove mail.mail records. Removing messages is managed at mail.mail unlink level using the 'is_notification' field. Indeed a mass_mailing email should remove the linked mail.message, while a canceled notification email should not remove the chatter message. Followup of odoo/odoo#209494 Forward-Port-Of: odoo/odoo#278321 Forward-Port-Of: odoo/odoo#277993
Original PR description
It currently deleted the inner mail.message, while it should actually remove mail.mail records. Removing messages is managed at mail.mail unlink level using the 'is_notification' field. Indeed a mass_mailing email should remove the linked mail.message, while a canceled notification email should not remove the chatter message. Followup of odoo/odoo#209494 Forward-Port-Of: odoo/odoo#278321 Forward-Port-Of: odoo/odoo#277993
Currentyl the unsupported models will be checked like the following ```sql ia.res_model NOT IN ARRAY['model1', 'model2'] ``` This causes a syntax error. Use `ANY` to avoid the issue ```sql ia.res_model != ANY(ARRAY['model1', 'model2']) ``` Reproduce in Odoo shell ```python from odoo.tools import SQL query = SQL(""" SELECT ia.id FROM ir_attachment ia WHERE ia.res_model NOT IN %(unsupported_models)s LIMIT 1; """, unsupported_models=self.env['ir.atta
Original PR description
Currentyl the unsupported models will be checked like the following
```sql
ia.res_model NOT IN ARRAY['model1', 'model2']
```
This causes a syntax error. Use `ANY` to avoid the issue
```sql
ia.res_model != ANY(ARRAY['model1', 'model2'])
```
Reproduce in Odoo shell
```python
from odoo.tools import SQL
query = SQL("""
SELECT ia.id
FROM ir_attachment ia
WHERE ia.res_model NOT IN %(unsupported_models)s
LIMIT 1;
""",
unsupported_models=self.env['ir.attachment']._get_cloud_storage_unsupported_models(),
)
```
opw-6404861
Forward-Port-Of: odoo/odoo#277971Steps to reproduce ================== - Log in with the portal user (or any user without karma points). - Open a forum post. - Try to mark it as the best answer. Technical ========= From here https://github.com/odoo/odoo/pull/215145/changes/46e5ab20cb33536f0cf12d2fc3690beaa11697ee `htmlJoin` expects its first argument to be an iterable and its second argument separator to be a string. Passing the message string as the first argument causes it to be treated as an iterable of characters,
Original PR description
Steps to reproduce ================== - Log in with the portal user (or any user without karma points). - Open a forum post. - Try to mark it as the best answer. Technical ========= From here https://github.com/odoo/odoo/pull/215145/changes/46e5ab20cb33536f0cf12d2fc3690beaa11697ee `htmlJoin` expects its first argument to be an iterable and its second argument separator to be a string. Passing the message string as the first argument causes it to be treated as an iterable of characters, while the guideline markup passed as the second argument is unintentionally used as the separator. As a result, the guideline link is inserted between every character of the message instead of being appended after it. Wrap the message and the additional guideline text in an array when calling `htmlJoin` so the notification is rendered correctly. Task-6302585 Forward-Port-Of: odoo/odoo#276137
Because of this PR https://github.com/odoo/odoo/pull/235719 Audit Trail no longer functions as expected: 1) Tracking messages no longer show in the Audit Trail 2) Description is missing from Audit Trail This commit fixes these issues. task-6413110 Forward-Port-Of: odoo/odoo#278099
Original PR description
Because of this PR https://github.com/odoo/odoo/pull/235719 Audit Trail no longer functions as expected: 1) Tracking messages no longer show in the Audit Trail 2) Description is missing from Audit Trail This commit fixes these issues. task-6413110 Forward-Port-Of: odoo/odoo#278099