Thursday, August 14, 2025
8 changes · 17.0
Enhancements to existing features
The web module now makes its existing download filename parser available for reuse by other modules. This helps teams handle downloaded file names consistently across custom download flows without changing current behavior for users.
Original PR description
Allow other modules to reuse the existing RFC 6266/5987-compliant parser for the Content-Disposition header. This avoids duplicated parsing logic and prevents subtle bugs when extracting filenames (quoted, escaped, or RFC 5987-encoded) across custom XHR/Blob download flows. This change only exports an already used function in the web download stack. No behavior change, no performance impact, and fully backward compatible. It centralizes fixes and makes testing easier while keeping modules consistent. 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
Resolved issues and error corrections
This fixes an internal test that could fail unpredictably when checking notification delivery. It helps keep automated validation stable, reducing false alarms in the development and release process without changing customer-facing behavior.
Original PR description
Before this commit, the `test_trigger_notification` test was sometimes failing. This test was already fixed in [1], starting with v16.4. The issue is that the test sends a message and expects one notification to be received. However, the subscribe is done with 0 as the last id. In such cases, every notification created in the last minute is sent when calling subscribe. This commit fixes the issue by passing the correct value for `last_id`. [1]: https://github.com/odoo/odoo/pull/218172 fixes runbot-163224 Forward-Port-Of: odoo/odoo#222974
This fixes an inconsistent test failure that could occur when a Kenyan localization stock module was installed alongside Sales Stock. The change ensures the product and stock quantity setup stays consistent, preventing false packaging errors during automated checks.
Original PR description
Steps to reproduce the bug: - Install l10n_ke_edi_oscu_stock -Try to run the test: test_package_with_moves_to_different_location_dest Problem: A user error is raised: “There is nothing eligible to put in a pack. Either there are no quantities to put in a pack or all products are already in a pack.” This happens because when only sale_stock is installed, the product type is Consumable, so the move gets assigned directly. However, with l10n_ke, the product becomes Storable, and when assigning the move, the system checks whether there is enough quantity available in stock. Solution: Force the product to remain Storable in all cases and update its stock quantity accordingly. [runbot-108414](https://runbot.odoo.com/odoo/runbot.build.error/108414)
This fix ensures Odoo can continue processing certain longer website and report template expressions correctly with newer Python versions. It prevents valid templates from failing due to internal Python instruction changes, improving reliability during upgrades.
Original PR description
Not entirely clear why it was apparently excluded, but apparently in 3.13 some qweb expressions require the use of `EXTENDED_ARG`. Specifically [1] makes the expression long enough that it needs at least one "long jump" which then requires an `EXTENDED_ARGUMENT`, here's the sizes for the expression in question in various Python versions: - 3.10: 102 bytes - 3.11: 188 bytes - 3.12: 214 bytes - 3.13: 272 bytes Thus it makes sense at at some point the earliest jumps in the expression (and `and`/`or` *are* jumps, since they're short-circuiting) would become "long". These increases in size can be due to a multitude of factors e.g. changes in inline cache details (3.11 and above), jumps becoming strictly typed and requiring `TO_BOOL` instructions (3.13), ... [1]: https://github.com/odoo/odoo/commit/cc68a012649f9eb331265deba3197abaf1700d97#diff-92dda03d204cc6ea8b7aacd0c07939843c83b1841f4a3049903844777d83c07bL154-R223
This fix ensures Odoo's test time simulation only applies to the intended active database. It prevents unintended side effects in related databases such as logging databases, improving reliability during testing without changing normal user workflows.
Original PR description
Filtering the postgres database was not enough, the log_db was also affected. Since only the order was impacted, this was creating strange side effect in databases like the log-db where it was only modified when the function exists. Checking the -d is more reliable and safer to avoid any side effect when testing with faketime. Forward-Port-Of: odoo/odoo#222805
This change makes an automated test for bus notifications run consistently by ensuring the listener is ready before the notification step begins. It reduces random test failures, helping maintain confidence in release validation without changing customer-facing behavior.
Original PR description
This commit fixes the `test_postcommit` that fails in a non deterministic fashion. This test ensures bus notifications created in the post commit hook result in only one batch. To do so, the test listens on the connection with a selector. However, the main thread doesn't wait for the selector to be register before triggering the postcommit hook. This commit ensures the test waits for the selector to register the database connection before going further. runbot-77470 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
This fix allows Swiss payroll users to duplicate monthly wage type entries when managing employee contracts. It removes an unnecessary restriction, making contract setup and maintenance smoother for payroll teams.
Original PR description
task-5008742
The salary configurator now keeps dependent options unavailable when required choices are missing or disabled. This prevents employees or HR users from selecting inconsistent salary package options and helps keep configurations accurate.
Original PR description
When opening the salary configurator, fields that depend on mandatory fields that are disabled/empty should also be disabled/empty. This is fixed by removing unnecessary code and a variable overridden 'mandatoryBenefitSelected'. Task: 4926209