Wednesday, April 13, 2022
14 changes · master
Enhancements to existing features
The mail app's message and chat window logic was reorganized so key actions live in shared data models rather than screen components. This internal improvement should make future changes easier and reduce the risk of fragile behavior, without introducing a major user-facing change.
Original PR description
This commit moves some handler methods from components to models, as a step closer to having most of business code in models. Having business code in models is desirable so that the code is much more maintainable: easier to change and more robust code. Task-2579306
This update standardizes a shorthand used by Odoo developers to express optional search filters. It makes common filtering rules easier to write and maintain, reducing complexity in core code without changing expected business behavior.
Original PR description
Previous to this PR, [we had only 1 short-circuit operator: `=?`](https://github.com/odoo/odoo/blob/44029495bc4f85c9f99b16dbab0a49c6ba0f19f9/odoo/osv/expression.py#L1028-L1035). This PR formalizes…
Previous to this PR, [we had only 1 short-circuit operator: `=?`](https://github.com/odoo/odoo/blob/44029495bc4f85c9f99b16dbab0a49c6ba0f19f9/odoo/osv/expression.py#L1028-L1035).
This PR formalizes the concept and applies it to all existing operators, also introducing a left short-circuit equivalent (`?=`).
```
Short-circuit operators are:
<term_operator>? right is false or left <term_operator> right
?<term_operator> left is false or left <term_operator> right
Some examples of short-circuit operators:
=? right = false or left = right
!=? right = false or left != right
>? right = false or left > right
<? right = false or left < right
>=? right = false or left >= right
<=? right = false or left <= right
in? right = false or left in right
not in? right = false or left not in right
?= left = false or left = right
?!= left = false or left != right
?> left = false or left > right
?< left = false or left < right
?>= left = false or left >= right
?<= left = false or left <= right
?in left = false or left in right
?not in left = false or left not in right
```
Using short-circuit operators enables the simplification of some domains like, for example, probably the most common one in Odoo:
`[('|', ('company_id', '=', False), ('company_id', 'in', company_ids)]`
With short-circuit operators:
`[('company_id', '?in', company_ids)]`
Here's another example with a datetime field:
`['|', ('deadline', '=', False), ('deadline', '<=', fields.Datetime.now())]`
`[('deadline', '?<=', fields.Datetime.now())]`
--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThe mail composer was simplified by removing an outdated internal content-reading method. This makes the messaging code easier to maintain and helps reduce future issues without changing the user experience.
Original PR description
Task-2579306
This update simplifies the mail message composer by removing an unnecessary internal text selection helper. It helps keep the messaging code easier to maintain without changing how users write or send messages.
Original PR description
Task-2579306
The mail composer has been updated to handle Enter key actions through a dedicated composer view. This makes message writing behavior easier to maintain and helps ensure a smoother, more consistent user experience when composing messages.
Original PR description
Task-2579306
The mail app now handles the Enter key in the message composer through a clearer shared view layer. This should make composer behavior easier to maintain and help keep message-entry interactions consistent across the application.
Original PR description
Task-2579306
The Discuss app is being updated to better handle the action for creating a new channel on mobile. This should make the mobile messaging experience more consistent and easier to maintain as the interface evolves.
Original PR description
Task-2579306
The Discuss mobile interface now has a clearer internal handling for selecting mailbox items. This improves the reliability and maintainability of the mobile messaging experience, helping users navigate conversations more smoothly.
Original PR description
Task-2579306
Discuss is being updated to better manage the quick search input within the messaging interface. This helps prepare the mail app for smoother navigation and more reliable search interactions in Discuss.
Original PR description
Task-2579306
This update improves how the Discuss app handles the action to start a meeting from the sidebar. It helps keep the meeting-start flow better organized and easier to maintain, supporting a smoother collaboration experience for users.
Original PR description
Task-2579306
The mail app now handles follow-button clicks through the message thread itself, making follow and unfollow actions more consistent. This improves reliability and maintainability of the user experience around following conversations.
Original PR description
Task-2579306
The mail app now handles the unfollow action through the conversation itself, making follower controls more consistent. This should make maintaining and improving the follow/unfollow experience easier while keeping the user-facing behavior stable.
Original PR description
Task-2579306
The mail app’s internal message and discussion handling has been reorganized so more business logic sits in shared models instead of screen components. This should make future changes easier, reduce duplication, and improve long-term reliability without introducing major visible changes for users.
Original PR description
This commit moves some handler methods from components to models, as a step closer to having most of business code in models. Having business code in models is desirable so that the code is much more maintainable: easier to change and more robust code. Task-2579306
Payslip batches now skip unnecessary checks when expense-related payroll data does not require them. This reduces extra database work during batch creation, helping payroll processing run more efficiently without changing the user workflow.
Original PR description
Filters out 2 queries when creating payslips if they are not necessary.