Wednesday, November 12, 2025
8 changes · saas-18.4
Resolved issues and error corrections
The upload button in accounting dashboards could be accidentally dragged out of place. This update locks the button in position so the interface stays stable and easier to use.
Original PR description
Issue: - In the dashboard, the upload button (purchase journal and others) could be dragged. - This caused unintended movement of the upload UI element. Fix: - Added `draggable=false` to the upload button element. - Ensures the button remains fixed and cannot be dragged around. TaskID-5114617 Forward-Port-Of: odoo/odoo#235086 Forward-Port-Of: odoo/odoo#229013
Updated a purchase-related test so it accepts the error type now returned by PostgreSQL 18. This keeps automated test runs stable after a database behavior change, without affecting customer-facing purchase features.
Original PR description
Apparently in pg18 a standard-compliance fix (postgres/postgres@086c84b23d99c2ad268f97508cd840efc1fdfd79) has led to `RESTRICT_VIOLATION` being emitted in cases which formerly emitted…
Apparently in pg18 a standard-compliance
fix (postgres/postgres@086c84b23d99c2ad268f97508cd840efc1fdfd79) has led to `RESTRICT_VIOLATION` being emitted in cases which formerly emitted `FOREIGN_KEY_VIOLATION`. One such case is specifically being tested for by `test_purchase_order_line_without_uom`, leading to this test failing systematically when running pg18:
psycopg2.errors.RestrictViolation: update or delete on table "uom_uom" violates RESTRICT setting of foreign key constraint "purchase_order_line_product_uom_id_fkey" on table "purchase_order_line"
DETAIL: Key (id)=(29) is referenced from table "purchase_order_line".
Update the test to use the more generic `IntegrityError` as it's probably more than sufficient for our purposes. Technically we could pass a tuple of `(ForeignKeyViolation, RestrictViolation)` but it doesn't really seem necessary. And it would require fixing the `_raisesContext` override as currently it is very much *not* compatible with that.
Forward-Port-Of: odoo/odoo#235119A test in the HR module was trying to access employee fields that are not always available on an employee record, which caused a build failure. The test now checks whether each field can actually be accessed before using it, preventing this crash and keeping automated builds stable.
Original PR description
This test had a bug: `self.env['hr.employee']._fields.keys()` may contain fields that do not exist in an `hr.employee` record. Now, employee fields that cannot be accessed are filtered out using `hasattr()`. To avoid further crashes. Runbot build error: https://runbot.odoo.com/odoo/runbot.build.error/233942 Bug has been introduced by task-5103739 task-5254322 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change fixes flaky website builder tests related to editing images. It ensures the required image assets load before the tests continue, so results are consistent and failures no longer happen randomly.
Original PR description
The goal of this commit is to fix the indeterminate tests related to image editing in the website builder. Problem: ===== Some tests related to image editing on the website fail in an indeterminate…
The goal of this commit is to fix the indeterminate tests related to image editing in the website builder. Problem: ===== Some tests related to image editing on the website fail in an indeterminate manner. This test failure is related to the sidebar's async. When selecting an image, the Image options need to fetch certain data (the original image, etc.). The “html_editor.assets_image_cropper” bundle is also loaded. This loading time can exceed 200 ms, causing the test to fail unpredictably. Solution: ====== 1.Preload the “html_editor.assets_image_cropper” bundle and store it in the cache. 2. Use `waitSidebarUpdated` when selecting an image. `waitSidebarUpdated`` will wait until all the data is loaded and the sidebar is updated. This solution is not optimal, but it will make all the tests deterministic. The best solution: ========= We should mock or preload all the data needed for the tests. This change requires adapting the current production code to make it easily patchable to mock, for example, “.text()” on a response to an image fetch. Error: https://runbot.odoo.com/odoo/error/232956 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change makes input fields inside image captions use a transparent background instead of a dark gray one. It improves the visual consistency of captions and makes the editor look cleaner for users.
Original PR description
### Purpose of this PR: - Set the default background of inputs inside `<figcaption>` to transparent. This prevents them from appearing dark gray (rgb(59,59,59)) in caption. task-5122745 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents an unexpected scrollbar from appearing in the website editor when hidden text is used inside certain content blocks. It improves the editing experience in Chrome, Edge, and Safari by keeping the page layout stable and avoiding a distracting visual issue.
Original PR description
This is a known issue [1] in bootstrap, which displays an unexpected scrollbar when we have a visually-hidden text in the table. The issue occurs in Chrome, Edge and Safari, but does not in Firefox. **Steps to see the issue:** - Open website and start editing - Drop a table of content - Drop inside of the ToC a donation snippet - Click on the donation amounts form => A scrollbar appears. The visually-hidden spans are present since [2], but the problem couldn't be seen until commit [3] removed the `overflow: hidden` style. [1]: https://github.com/twbs/bootstrap/issues/41554 [2]: https://github.com/odoo/odoo/commit/faafb913a0af5c4bfa7d207e09bbea0d97125aed [3]: https://github.com/odoo/odoo/commit/10156c10b09dc502a40253d64e2505e817a520bf task-5169275
This change cleans up a complex styling workaround in the spreadsheet side panels. It keeps the same visual result while making the interface easier to maintain and less prone to styling conflicts in the future.
Original PR description
Because of a really strong rule in o_spreadsheet lib that forced the box-sizing property pretty much everywhere, we came up with a super dense rule to counteract it inside odoo and specifically inside the side panels. This commits aims to simplify it at best with the common denominator of those rules. Task-4878174 Forward-Port-Of: odoo/enterprise#99240 Forward-Port-Of: odoo/enterprise#98876
This update fixes spreadsheet input styling so missing or invalid fields are always clearly marked. It also prevents dark mode styling from altering the spreadsheet layout, keeping the interface consistent and easier to use.
Original PR description
Following the style revamp of the o-spreadsheet lib, we introduced a class o-input (differs from odoo o_input) in order to avoid collision with the odoo classes which tend to be altered in dark mode which spreadsheet does not support. However, we still relied on the default behaviour of odoo classes to mark specific inputs as invalid or missing. This commit ensures that missing/invalid are always marked as such while make preventing the dark mode to break the default layout. Task-4878174 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#235236 Forward-Port-Of: odoo/odoo#234517