Wednesday, January 26, 2022
4 changes · master
Enhancements to existing features
Mail startup now retrieves initialization failures through a separate server request, helping the app handle issues more gracefully. This improves reliability for users opening Discuss or chatter without changing their normal workflow.
Original PR description
Task-2742946 Task-2746116
Planning managers get better ways to organize shifts, spot changed published shifts that need resending, and see planned hours against capacity directly in the Gantt view. Duplicating planning roles and shift templates is clearer and more complete, while the employee screen is simplified by removing an extra planning shortcut.
Original PR description
**Planning:** So, In this PR did the following points: - Add a custom filter and a group by on employees work location. - Indicate the percentage of hours planned with the total capacity of the resource in gantt view progress bar. - Remove the `'view planning'` action button from the control panel of `hr.employee`. - Copy the project and task set on the template when duplicating it shift template. - Add a group by on company and end date. - Add filter to resend which return shifts that have some changes that were made since it was last published. - Add `(copy) `to the name of the role when duplicating it. closes #23212 task-2725993
The appointment calendar now follows the visitor's selected language settings, including the first day of the week, weekend days, and time format. This makes booking appointments clearer and more familiar for customers in different regions.
Original PR description
# Purpose Adapt the frontend calendar and time slot based on the language used # Specifications Before the calendar and the slots displayed in the frontend were hardcoded to a certain format. Now we use the locale to adapt the calendar like the first week day, the weekend and the time format. The locale is determined by the language currently used on the frontend. # Links task-2618615
Resolved issues and error corrections
Fixes an issue where saving website or email editor content could hang if background checks were still running while editor elements were being closed. This helps ensure edits are saved reliably, reducing the risk of users being blocked during content updates.
Original PR description
[FIX] web_editor: resolve ajax request of cleanForSave Upon save in website or in mass_mailing, if a `cleanForSave` of a `SnippetEditor` or a `SnippetOption` wait for the end of an `this._rpc()`…
[FIX] web_editor: resolve ajax request of cleanForSave
Upon save in website or in mass_mailing, if a `cleanForSave` of a
`SnippetEditor` or a `SnippetOption` wait for the end of an
`this._rpc()` request AND the `SnippetEditor` or the `SnippetEditor`
of the `SnippetOption` has a `SnippetEditor` ancestor, the
`cleanForSave` will never resolve.
Here is the scenario:
- **SnippetEditor B** has **SnippetEditor A** as its odoo widget parent
In `SnippetMenu` `_destroyEditors`:
- **SnippetEditor A** and **all its SnippetOption** call `cleanForSave`.
- **SnippetEditor B** and **all its SnippetOption** call `cleanForSave`.
One of the promise of **SnippetEditor B** includes the result of
`rpc()` in `ajax_service.js`.
- **SnippetEditor A** and **all its SnippetOption**
`cleanForSave promises` resolve (but not **SnippetEditor B**).
- **SnippetEditor A** get's destroyed (`snippetEditor.destroy()`). As
**SnippetEditor B** is a `Widget` child of **SnippetEditor A**:
- **SnippetEditor B** get's destroyed (here is where the problem start).
... in the mean time ...
The ajax request of a promise of **SnippetEditor B** ends. The promise
of the `rpc()` will never finish because **SnippetEditor B** is
destroyed and the condition in `rpc()` is:
```js
if (!target.isDestroyed()) {
resolve(result);
}
```
Because the promise will never finish for `_destroyEditors`, the save
action will never fully complete.
Task-2742008