Friday, February 21, 2025
5 changes · master
Resolved issues and error corrections
This change cleans up leftover asset declaration files that were no longer used after a previous update. It helps keep the CRM and website event sales areas consistent and reduces the chance of confusion from obsolete configuration.
Original PR description
Description of the issue/feature this PR addresses: from commit https://github.com/odoo/odoo/commit/0364161 removed the assets declarations in xml, but there are still some declarations left behind. so this commit to clean that up 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
Point of Sale loyalty features now exclude special products correctly, preventing valid products from being filtered out by mistake. This helps keep loyalty-related checkout flows and tests reliable for businesses using POS loyalty programs.
Original PR description
(should be backported to version where we start to load product.templates.)
This update fixes outdated internal type definitions used by several Odoo apps, especially around mail-related features. It improves developer tooling and reduces maintenance errors, with no expected direct change for end users.
Original PR description
\*: hr, hr_holidays, im_livechat, portal, product, project, rating, website_slides. The mail module uses type definition files to provide autocompletion for its records. Each bundle that enrich a modal through patches extends the origin interface. However, doing this manually is error prone and cumbersome. Most of the definitions are outdated: either because the patches moved in other bundles, fields were removed, fields or methods were forgotten, and so on. Moreover, many models override the insert/get methods and the records property to add typing which is often too broad (e.g. Model[]|Model for insert return type while we could rely on the parameter type to be more specific). This PR fixes all those definitions thanks to a script that automatically generates definitions in the correct bundles.
Refreshing the My Tasks page in Project now keeps users in the correct Project menu context. This prevents confusion and makes navigation more consistent for people managing their tasks.
Original PR description
Steps to reproduce ================== - Open project > Tasks > My tasks - Refresh the page => The project menu is missing Cause of the issue ================== The server action…
Steps to reproduce ================== - Open project > Tasks > My tasks - Refresh the page => The project menu is missing Cause of the issue ================== The server action `action_server_view_my_task` calls the window action `action_view_my_task`. The project menu has a a reference to the server action. Currently, a path my-tasks is set on the window action. When we reload the page, we look for actions with this path. In this case, we find the window action. We then look for a menu that contains this action. Since no menu contains the window action, we won't find any. Solution ======== We can move the path from the window action to the server action. One downside is when we access the window action from `project.task.type.delete.wizard`. In that case, we will lose the path, and the url will look like `/odoo/7/action-207` With that said, the most common case is accessing the action from the menu. This fixes the refresh in that case. opw-4554814
Odoo now returns more appropriate error statuses when requests fail, helping integrations and clients better understand what went wrong. This makes error handling clearer without changing core business workflows.
Original PR description
Historically Odoo always returned 400 as the default "4xx" http status code for when the customer screwed up. But 400 is actually reserved for when the http request is malformed, i.e. there was an…
Historically Odoo always returned 400 as the default "4xx" http status code for when the customer screwed up. But 400 is actually reserved for when the http request is malformed, i.e. there was an error while parsing the headers or the body (according strickly to Content-Type). The default go-to error for when the request is syntaxically valid but otherwise garbage is 422 - Unprocessable Entity. Access Denied uses 403 - Forbidden and not 401 - Unauthorized because 401 mandates the use of the `WWW-Authenticate` and `Authorization` headers which don't apply in Odoo. Missing Error uses 404 - Not Found and not 410 - Gone because Missing Error is not only used when trying to write on a deleted record, it also applies when trying to write on a record that never existed. Used the opportunity to visit some other places where we used 400 and to use a http error that is better indicated. See https://httpwg.org/specs/rfc9110.html#status.4xx for the latest specification of HTTP status codes. task-4284096