a9f020e777fdc7c48f2bddd268feee4664f82313
This revision is related to odoo/enterprise#33088 The needs is the same: While using Studio, instead of removing the node from the view when the user is not part of the group, set the node as invisible. This is so the xpath expressions computed by Studio takes into account nodes which are removed from the view when the user is not part of the group required by the node. e.g. ```xml <form> <group> <field name="name"/> <field name="currency_id" groups="base.group_multi_currency"/> <field name="foo"/> </group> </form> ``` With the above view, if you want to add a new field after `<field name="foo"`/> and the `currency_id` field node is removed from the view during the post-processing of the view because the user doesn't have the group, Studio computed the xpath expression with `field[2]`, and then the new field was mis-placed, it was before the `foo` field instead of after. The strategy is to let the nodes, as invisible, for which the user doesn't have the groups so the xpath expression is correctly computed for the view as it is stored in the database/ before the post-processing step removing the nodes. The above revision applies this strategy for nodes other than `<field/>` and `<t/>`. The `<field>` were not included because it was, at that time, believed it wasn't necessary. Even though the index was wrong as demonstrated in the above example, it was then converted with the expression `field[@name="foo"]` instead of `field[2]`, and therefore it was fine not to include the `field` nodes in the strategy. Also, fields were not included in the strategy because for them, if the `groups` is set in the Python model e.g. ```py currency_id = fields.Many2one(..., groups='base.group_multi_currency') ``` Attempting to read them while you don't have the group will lead to an AccessError exception. And there was no way to display the field as invisible in the view without the web client to try to read its content. Unfortunately, it isn't the case, as demonstrated by the tours included in this revision, field nodes must be included in the views, as invisible, so Studio can compute correctly the xpath expression. This revision therefore aims to apply the same strategy for `field` nodes, make them invisible instead of removing them from the view when the user is not part of the groups. The revision takes care to override the web client so it doesn't try to read the value of group-protected fields when the user doesn't have the group. So the field, with the label and everything, is included in the view, but its content/value is left empty, as the user cannot read the content. Technically, there won't be many cases, because users editing views using Studio are admins, and in most-cases admins have access to these group-protected fields. Having a field group-protected to which the admins do not belong doesn't happen that often. closes odoo/odoo#107877 X-original-commit: 91f213e202ca29c4ef0bb190663fc48f169a64a6 Related: odoo/enterprise#34940 Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com> Signed-off-by: Denis Ledoux (dle) <dle@odoo.com> Co-authored-by: kebeclibre <lpe@odoo.com>
…
…
Odoo
Odoo is a suite of web based open source business apps.
The main Odoo Apps include an Open Source CRM, Website Builder, eCommerce, Warehouse Management, Project Management, Billing & Accounting, Point of Sale, Human Resources, Marketing, Manufacturing, ...
Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps.
Getting started with Odoo
For a standard installation please follow the Setup instructions from the documentation.
To learn the software, we recommend the Odoo eLearning, or Scale-up, the business game. Developers can start with the developer tutorials
Languages
Python
49.6%
JavaScript
47.8%
SCSS
2%
CSS
0.3%
HTML
0.2%