Daily updates from Odoo
Thursday, September 4, 2025
15 changes · saas-18.4
Resolved issues and error corrections
The website editor now correctly shows the highlight tool as active when selected highlighted text is revisited. This helps users understand the current formatting state and avoid unnecessary repeated edits.
Original PR description
With the initial [website builder refactor], the highlight tool did not show when it is active or not. This commit adds the `active` class on the button when it is. Steps to reproduce: - Open website builder - Select some text - Add a highlight - Select the same text again (and expand the toolbar again) - Bug: the highlight tool is not shown as active [website builder refactor]: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
Discuss now correctly clears unread indicators when a user opens a channel after another browser session already marked it as read. This prevents stale unread badges and keeps message status consistent across multiple browser windows.
Original PR description
Before this commit, if you opened an unread channel that the server already considered “read,” the channel would remain marked as unread in your browser. This typically happens when one browser instance misses the bus notification that cleared the unread status. Steps to reproduce: 1. Open Discuss as the same user on two browsers (A and B) 2. Send a message to said user 3. Stop bus notifications on browser A 4. Read the message on browser B 5. Re-enable bus notification on browser A 6. Open the channel on browser A -> not being marked as read This happens because the method `_set_last_seen_message` skips sending the notification when the message seen is older than the current `seen_message_id` (previously set by the other browser). This commit fixes the issue by setting the `allow_order` parameter in the rpc call. task-4863058 Forward-Port-Of: odoo/odoo#224881 Forward-Port-Of: odoo/odoo#218623
This fixes an error that prevented users from activating the Employee calendar view through Studio. The calendar setup now uses searchable employee contract dates, allowing the view to be enabled without a crash.
Original PR description
Steps to reproduce: - On the Employee app, activate Studio - Switch to the "Views" menu - Click on "Calendar" under the "Timeline views" group - A traceback happens and you can not activate the view Reason: The calendar view tries to setup itself with the fields "date_start" and "date_end" of hr.version. However, those two fields are computed fields, and thus not stored, which causes an error when the fields are used in a SQL query. How it was fixed: By defining a search method for both hr.version.date_start and hr.version.date_end that overrides them with contract_date_start and contract_date_end which are not computed fields. Task ID: 5043792
This fix keeps the editor’s text selection when users select content with the keyboard and preview formatting changes. As a result, color and background color tools remain available instead of closing unexpectedly, making text editing more reliable.
Original PR description
Steps to Reproduce: - Go to To-do and create a new item. - Type something in the editor. - Select all the text using Ctrl + A (keyboard). - Try to change the color/background color. - The toolbar closes suddenly. Current behavior before PR: - The selection was only being saved when using a mouse. Keyboard-based selections (like Ctrl + A) were not staged. - As a result, when undoing a preview, the editor couldn't restore the selection. Desired behavior after PR is merged: - Now the selection is saved earlier, so it can be restored properly when reverting to previous step. - This keeps the toolbar open and working as expected. task-4941601 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The HTML editor now more accurately recognizes internal Odoo links, including links that use the Odoo instance domain. It also better identifies valid website pages, reducing incorrect warnings when users preview links such as shop category pages.
Original PR description
Before this commit: the condition to check if an url is internal is not complete as the user could user the odoo instance domain instead of the real domain. The check if an internal url is a frontend one is rather naive as there are cases where the url ends with a number but actually not leading to a record. Reproduction for the second use case: 1. create a link with frontend url for example `/shop/category/16` 2. click on the link, when it loads the preview, a warning pops up After this commit, the cases explained above are included. task-4971829 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update speeds up an internal test selection process by avoiding unnecessary checks when special test tags are not being used. It also helps prevent issues in environments where source files are unavailable, improving reliability for development and release workflows.
Original PR description
`get_method_additional_tags` can be slow when there are a lot of test to load while the feature is only needed in rare cases. This commit removes the check if the corresponding tag is not in the config test-tags. This should also solve an issue when the sources are not available. Forward-Port-Of: odoo/odoo#225109 Forward-Port-Of: odoo/odoo#225061
This fixes website analytics goal tracking so custom goal details are sent in the expected format again. Businesses using Plausible analytics can rely on conversion reports with custom parameters, such as cart-related goals, remaining accurate after the recent website framework update.
Original PR description
Since commit b9b3a60, conversion to owl, the props are sent as string instead of object.
This commit restores old behaviour of using a JSON object for props.
Before commit b9b3a60:
> $($0).data('event-params')
{Type1: 'cart'}
After commit b9b3a60:
> $0.dataset.eventParams
'{"Type1": "cart"}'
After this commit:
> JSON.parse($0.dataset.eventParams)
{Type1: 'cart'}
opw-oxpslide-stbu
Forward-Port-Of: odoo/odoo#225324This fix prevents Odoo test runs from crashing when no test tags are configured. It helps CI pipelines using pytest integrations complete reliably instead of failing on an internal configuration default.
Original PR description
Description of the issue/feature this PR addresses: The issue arises when using pytest (to get junit xml for CI) with [pytest-odoo==1.0.1](https://github.com/camptocamp/pytest-odoo) ``` run_tests def get_method_additional_tags(self, test_method): run_tests """Guess if the test_methods is a query_count and adds an `is_query_count` tag on the test run_tests """ run_tests additional_tags = [] run_tests > if 'is_query_count' in odoo.tools.config['test_tags']: run_tests E TypeError: argument of type 'NoneType' is not iterable run_tests run_tests ../custom/src/odoo/odoo/tests/common.py:778: TypeError ``` Info @wt-io-it --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225496
This fixes guided tours so they wait for page changes to finish before looking for the next item to click. It prevents tours from accidentally going backwards or failing when a menu action is still loading a new screen.
Original PR description
Step to reproduce: - Create a tour - Add a step that click on a menuitem on the systray with a view already opened - Then add a step that click on the search bar of the view Before this commit, if the step of a tour was triggering an action (e.g.: a menuitem) and that the next step's trigger was finding an element on the view before the action has finished to update the view, then the tour was backwarding because the found element diseppeared when the new action loaded the new view. Now, the tour interactive wait that the action manager finish to update the view to be sure the get the right element for the step trigger. ISSUE: https://github.com/odoo/odoo/issues/214652 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#220319
The Indian e-waybill screen now shows errors and warnings with the correct visual colors, making important messages easier to understand. Errors appear in red and warnings in yellow, reducing confusion for users reviewing e-waybill issues.
Original PR description
Before: --- Error and warning colors were mismatched in the e-waybill view. In this commit: --- Fixed the e-waybill view to correctly display error messages - Errors now display in red (alert-danger) :red_square: - Warnings now display in yellow (alert-warning) :yellow_square: AccessError now handled correctly. --- task-5050937 Forward-Port-Of: odoo/odoo#225288 Forward-Port-Of: odoo/odoo#225078
This fix helps website generation recover properly when two processes try to update data at the same time. Instead of failing permanently, the system can now retry the operation, reducing occasional errors for users creating or updating websites.
Original PR description
When a concurrency error occurs, we need to let it retry. To do this, we must catch the Serialization Failure and raise it.
This update ensures a quality control test can run correctly when the module is installed on its own without demo data. It avoids false test failures related to missing user permissions for serial number label printing, improving reliability for validation and maintenance.
Original PR description
## Issue:
The test `test_receipt_validation_triggers_serial_number_label_print` fails when running `quality_control` alone without demo data
## Cause:
The user is missing the group `stock.group_production_lot`, that enable serial number printing
As a result, the condition `self.env.user.has_group('stock.group_production_lot')` in `stock.picking` `_get_autoprint_report_actions()` is not satisfied
The `button_validate()` in `stock.picking` will have an empty report_actions and will not print anything
The Demo data that allow the test to work is in `stock`
https://github.com/odoo/odoo/blob/9b08449f25cd16dc15117d305726380298c313d8/addons/stock/data/stock_demo.xml#L176-L182
## Steps to reproduce:
- Install only `quality_control` (no demo data)
- Run the test `test_receipt_validation_triggers_serial_number_label_print`
related-to: https://github.com/odoo/enterprise/pull/90134
opw-4790427
Forward-Port-Of: odoo/enterprise#93799
Forward-Port-Of: odoo/enterprise#93296The PLM dashboard now shows a more accurate count of engineering change validations that are specifically waiting for the current user. This helps users prioritize their own approval work without being distracted by approvals assigned to others.
Original PR description
The dashboard of PLM displays for each ECO type the number of validations pending in general, and the validations waiting for me specifically. The latter has been incorrectly computed for quite some time, as it computes how many ECOs exists where I am an approver and an approval is waiting - but there is no guarantee that the waiting approval is one of mine; it might be that I am a past approver of the ECO and that another approval (waiting for somebody else than me) exists, or that two approval are required on the same stage (one by me, one by somebody else) and I already approved. This commit switches the computation around by looking for pending approvals waiting for me, and then get the number of (non-archived) ECOs bound to them. Forward-Port-Of: odoo/enterprise#93728 Forward-Port-Of: odoo/enterprise#92348
This fix ensures portal users cannot become owners of Documents spreadsheets, because spreadsheets cannot be shared with editing rights to non-internal users. It helps keep ownership and access permissions aligned, reducing confusion and preventing unsupported sharing scenarios.
Original PR description
Following the discussion I had with @flch-odoo regarding https://github.com/odoo/enterprise/pull/92134 , Since Spreadsheets can not be shared in edit mode to non-internal users, we prevent them from becoming owners. opw-4753670 Forward-Port-Of: odoo/enterprise#93800 Forward-Port-Of: odoo/enterprise#92409
This fix stops Documents from opening a broken linking flow when there are no vehicle records available. Users will no longer see a crash when trying to link a document from the Fleet folder before any vehicles have been created.
Original PR description
*= documents_fleet Currently, when user tries to link a document with a vehicle and if there is no vehicle exists an error is raised. **Steps to Reproduce:** 1) Install `documents_fleet`…
*= documents_fleet Currently, when user tries to link a document with a vehicle and if there is no vehicle exists an error is raised. **Steps to Reproduce:** 1) Install `documents_fleet` module(without Demo Data). 2) Open Documents App. 3) Upload a file in `Fleet` folder. 4) Select the uploaded file and click on `'Link to a vehicle'` button. Error: `ValueError: invalid literal for int() with base 10: 'False'` Root Cause: The `link_to_record` method attempts to find the first record of the target model to use as a default value when opening the linking wizard. If no records exist, the search returns an empty recordset, and accessing `.id` at [1], on it results in the value `False`. The code then incorrectly constructs a default reference string like `fleet.vehicle,False`. The wizard crashes when it tries to parse this string and convert the `False` part to an integer. Solution: This commit prevents error by ensuring that the user cannot link a document to a model without existing records. [1]- https://github.com/odoo/enterprise/blob/83640d21b2c31ed9d572c48e02a9aeea9eb1607b/documents/models/documents_workflow_rule.py#L113 sentry-6792079496 Forward-Port-Of: odoo/enterprise#93738 Forward-Port-Of: odoo/enterprise#91888