Files
odoo_source/odoo/addons/test_new_api/security/ir.model.access.csv
T
Vincent Schippefilt 7d2baaa0c7 [IMP] web: project unity_read
Introduce an optimised way of reading a graph of data from the webclient.

Before this commit:
When reading data from the webclient it could at most read multiple ids of the same model in one RPC.
This mean that when reading x2many or specific information on many2one, that could only be done after the initial read (when the client knows the ids of the comodels) and model by model.

After this commit:
Introduce methods web_read and web_search_read_unity. Both method receive a specificiation for the fields instead of a list of fields. The specification can request fields from the model, as well as follow relations and request fields for each relations, recursively.

Example of web_read specification for account_move
```python
{'name': {}},
{'date': {}},
{'journal_id': {'fields': {'display_name':{}}}
},
...
{'invoice_line_ids' :
    {
        'fields': {
            'journal_id' : {'fields': {'display_name:{}}},
            'move_name' : {},
            ...
            'tax_ids' : {
                fields: {
                    'display_name':{},
                    ...
                }
            }
        }
    }
}
```

Result for this example with 2 invoice lines
```python
{
    'id': 1234,
    'name' : 'invoice name ABC',
    'journal_id: {
        'id': 999,
        'display_name': 'Customer Invoices'
    },
    ...
    'invoice_line_ids': [
        {
            'id': 666,
            'journal_id': {
                'id': 999,
                'display_name': 'Customer Invoices'
            },
            'move_name': 'a move name',
            'tax_ids': [
                {
                    'id': 333,
                    'display_name: "15% tax",
                    ...
                }
            ]
        },
        {
            'id': 667,
            'journal_id': {
                'id': 999,
                'display_name': 'Customer Invoices'
            },
            'move_name': 'another move name',
            'tax_ids': [
                {
                    'id': 334,
                    'display_name: "21% customer tax",
                    ...
                }
            ]
        }
    ]

}
```

closes odoo/odoo#119034

Signed-off-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
2023-04-21 08:02:17 +02:00

12 KiB

1idnamemodel_id:idgroup_id:idperm_readperm_writeperm_createperm_unlink
2access_categorytest_new_api_categorytest_new_api.model_test_new_api_category1111
3access_decimal_precision_test_alldecimal.precision.testmodel_decimal_precision_test1111
4access_discussiontest_new_api_discussiontest_new_api.model_test_new_api_discussion1111
5access_messagetest_new_api_messagetest_new_api.model_test_new_api_message1111
6access_emailmessagetest_new_api_emailmessagetest_new_api.model_test_new_api_emailmessage1111
7access_multitest_new_api_multitest_new_api.model_test_new_api_multi1111
8access_multi_linetest_new_api_multi_linetest_new_api.model_test_new_api_multi_line1111
9access_multi_line2test_new_api_multi_line2test_new_api.model_test_new_api_multi_line21111
10access_multi_tagtest_new_api_multi_tagtest_new_api.model_test_new_api_multi_tag1111
11access_creativework_editiontest_new_api_creativework_editionmodel_test_new_api_creativework_edition1111
12access_creativework_booktest_new_api_creativework_bookmodel_test_new_api_creativework_book1111
13access_creativework_movietest_new_api_creativework_moviemodel_test_new_api_creativework_movie1111
14access_mixedtest_new_api_mixedtest_new_api.model_test_new_api_mixed1111
15access_domain_boolaccess_domain_boolmodel_domain_bool1111
16access_test_new_api_fooaccess_test_new_api_foomodel_test_new_api_foo1111
17access_test_new_api_baraccess_test_new_api_barmodel_test_new_api_bar1111
18access_test_new_api_relatedaccess_test_new_api_relatedmodel_test_new_api_related1111
19access_test_new_api_companyaccess_test_new_api_companymodel_test_new_api_company1111
20access_test_new_api_company_attraccess_test_new_api_company_attrmodel_test_new_api_company_attr1111
21access_test_new_api_compute_inverseaccess_test_new_api_compute_inversemodel_test_new_api_compute_inverse1111
22access_test_new_api_compute_readonlyaccess_test_new_api_compute_readonlymodel_test_new_api_compute_readonly1111
23access_test_new_api_multi_compute_inverseaccess_test_new_api_multi_compute_inversemodel_test_new_api_multi_compute_inverse1111
24access_test_new_api_recursiveaccess_test_new_api_recursivemodel_test_new_api_recursive1111
25access_test_new_api_recursive_treeaccess_test_new_api_recursive_treemodel_test_new_api_recursive_tree1111
26access_test_new_api_cascadeaccess_test_new_api_cascademodel_test_new_api_cascade1111
27access_test_new_api_compute_readwriteaccess_test_new_api_compute_readwritemodel_test_new_api_compute_readwrite1111
28access_test_new_api_compute_onchangeaccess_test_new_api_compute_onchangemodel_test_new_api_compute_onchange1111
29access_test_new_api_compute_onchange_lineaccess_test_new_api_compute_onchange_linemodel_test_new_api_compute_onchange_line1111
30access_test_new_api_compute_dynamic_dependsaccess_test_new_api_compute_dynamic_dependsmodel_test_new_api_compute_dynamic_depends1111
31access_test_new_api_compute_unassignedaccess_test_new_api_compute_unassignedmodel_test_new_api_compute_unassigned1111
32access_test_new_api_one2manyaccess_test_new_api_one2manymodel_test_new_api_one2many1111
33access_test_new_api_one2many_lineaccess_test_new_api_one2many_linemodel_test_new_api_one2many_line1111
34access_test_new_api_binary_svgaccess_test_new_api_binary_svgmodel_test_new_api_binary_svg1111
35access_test_new_api_monetary_baseaccess_test_new_api_monetary_basemodel_test_new_api_monetary_base1111
36access_test_new_api_monetary_relatedaccess_test_new_api_monetary_relatedmodel_test_new_api_monetary_related1111
37access_test_new_api_monetary_customaccess_test_new_api_monetary_custommodel_test_new_api_monetary_custom1111
38access_test_new_api_monetary_inheritsaccess_test_new_api_monetary_inheritsmodel_test_new_api_monetary_inherits1111
39access_test_new_api_field_with_capsaccess_test_new_api_field_with_capsmodel_test_new_api_field_with_caps1111
40access_test_new_api_req_m2oaccess_test_new_api_req_m2omodel_test_new_api_req_m2o1111
41access_test_new_api_selectionaccess_test_new_api_selectionmodel_test_new_api_selection1111
42access_test_new_api_attachmentaccess_test_new_api_attachmentmodel_test_new_api_attachment1111
43access_test_new_api_attachment_hostaccess_test_new_api_attachment_hostmodel_test_new_api_attachment_host1111
44access_test_new_api_model_imageaccess_test_new_api_model_imagemodel_test_new_api_model_image1111
45access_test_new_api_model_aaccess_test_new_api_model_amodel_test_new_api_model_a1111
46access_test_new_api_model_baccess_test_new_api_model_bmodel_test_new_api_model_b1111
47access_test_new_api_model_parentaccess_test_new_api_model_parentmodel_test_new_api_model_parent1111
48access_test_new_api_model_childaccess_test_new_api_model_childmodel_test_new_api_model_child1111
49access_test_new_api_model_child_nocheckaccess_test_new_api_model_child_nocheckmodel_test_new_api_model_child_nocheck1111
50access_test_new_api_displayaccess_test_new_api_displaymodel_test_new_api_display1111
51access_test_new_api_model_active_fieldaccess_test_new_api_model_active_fieldmodel_test_new_api_model_active_field1111
52access_test_new_api_model_many2one_referenceaccess_test_new_api_model_many2one_referencemodel_test_new_api_model_many2one_reference1111
53access_test_new_api_inverse_m2o_refaccess_test_new_api_inverse_m2o_refmodel_test_new_api_inverse_m2o_ref1111
54access_test_new_api_model_binaryaccess_test_new_api_model_binarymodel_test_new_api_model_binary1111
55access_test_new_api_model_child_m2oaccess_test_new_api_model_child_m2omodel_test_new_api_model_child_m2o1111
56access_test_new_api_model_parent_m2oaccess_test_new_api_model_parent_m2omodel_test_new_api_model_parent_m2o1111
57access_test_new_api_model_private_address_onchangeaccess_test_new_api_model_private_address_onchangemodel_test_new_api_model_private_address_onchangebase.group_user1111
58access_test_new_api_partneraccess_test_new_api_partnertest_new_api.model_test_new_api_partner1111
59access_test_new_api_req_m2o_transientaccess_test_new_api_req_m2o_transientmodel_test_new_api_req_m2o_transient0000
60access_test_new_api_countryaccess_test_new_api_countrymodel_test_new_api_countrybase.group_user1111
61access_test_new_api_cityaccess_test_new_api_citymodel_test_new_api_citybase.group_user1111
62access_test_new_api_monetary_orderaccess_test_new_api_monetary_ordermodel_test_new_api_monetary_order1111
63access_test_new_api_monetary_order_lineaccess_test_new_api_monetary_order_linemodel_test_new_api_monetary_order_line1111
64access_test_new_api_model_selection_baseaccess_test_new_api_model_selection_basemodel_test_new_api_model_selection_base1111
65access_test_new_api_model_selection_requiredaccess_test_new_api_model_selection_requiredmodel_test_new_api_model_selection_required1111
66access_test_new_api_model_selection_non_storedaccess_test_new_api_model_selection_non_storedmodel_test_new_api_model_selection_non_stored1111
67access_test_new_api_model_selection_required_for_write_overrideaccess_test_new_api_model_selection_required_for_write_overridemodel_test_new_api_model_selection_required_for_write_override1111
68access_test_new_api_model_selection_relatedaccess_test_new_api_model_selection_relatedtest_new_api.model_test_new_api_model_selection_relatedbase.group_user1111
69access_test_new_api_model_selection_related_updatableaccess_test_new_api_model_selection_related_updatabletest_new_api.model_test_new_api_model_selection_related_updatablebase.group_user1111
70access_test_new_api_moveaccess_test_new_api_movemodel_test_new_api_move1111
71access_test_new_api_move_lineaccess_test_new_api_move_linemodel_test_new_api_move_line1111
72access_test_new_api_paymentaccess_test_new_api_paymentmodel_test_new_api_payment1111
73access_test_new_api_orderaccess_test_new_api_ordermodel_test_new_api_order1111
74access_test_new_api_order_lineaccess_test_new_api_order_linemodel_test_new_api_order_line1111
75access_test_new_api_model_shared_cache_compute_parentaccess_test_new_api.model_shared_cache_compute_parentmodel_test_new_api_model_shared_cache_compute_parent1111
76access_test_new_api_model_shared_cache_compute_lineaccess_test_new_api.model_shared_cache_compute_linemodel_test_new_api_model_shared_cache_compute_line1111
77access_test_new_api_compute_containeraccess_test_new_api_compute_containermodel_test_new_api_compute_container1111
78access_test_new_api_compute_memberaccess_test_new_api_compute_membermodel_test_new_api_compute_member1111
79access_test_new_api_useraccess_test_new_api_usermodel_test_new_api_user1111
80access_test_new_api_groupaccess_test_new_api_groupmodel_test_new_api_group1111
81access_test_new_api_compute_editableaccess_test_new_api_compute_editablemodel_test_new_api_compute_editable1111
82access_test_new_api_compute_editable_lineaccess_test_new_api_compute_editable_linemodel_test_new_api_compute_editable_line1111
83access_test_new_api_model_constrained_unlinksaccess_test_new_api_model_constrained_unlinksmodel_test_new_api_model_constrained_unlinks1111
84access_test_new_api_trigger_leftaccess_test_new_api_trigger_leftmodel_test_new_api_trigger_left1111
85access_test_new_api_trigger_middleaccess_test_new_api_trigger_middlemodel_test_new_api_trigger_middle1111
86access_test_new_api_trigger_rightaccess_test_new_api_trigger_rightmodel_test_new_api_trigger_right1111
87access_test_new_api_crewaccess_test_new_api_crewmodel_test_new_api_crewbase.group_user1111
88access_test_new_api_shipaccess_test_new_api_shipmodel_test_new_api_shipbase.group_user1111
89access_test_new_api_pirateaccess_test_new_api_piratemodel_test_new_api_piratebase.group_user1111
90access_test_new_api_prisoneraccess_test_new_api_prisonermodel_test_new_api_prisonerbase.group_user1111
91access_test_new_api_precomputeaccess_test_new_api_precomputemodel_test_new_api_precompute1000
92access_test_new_api_precompute_lineaccess_test_new_api_precompute_linemodel_test_new_api_precompute_line1000
93access_test_new_api_precompute_comboaccess_test_new_api_precompute_combomodel_test_new_api_precompute_combo1000
94access_test_new_api_precompute_editableaccess_test_new_api_precompute_editablemodel_test_new_api_precompute_editable1000
95access_test_new_api_precompute_readonlyaccess_test_new_api_precompute_readonlymodel_test_new_api_precompute_readonly1000
96access_test_new_api_precompute_requiredaccess_test_new_api_precompute_requiredmodel_test_new_api_precompute_required1000
97access_test_new_api_precompute_monetaryaccess_test_new_api_precompute_monetarymodel_test_new_api_precompute_monetary1000
98access_test_new_api_prefetchaccess_test_new_api_prefetchmodel_test_new_api_prefetch1000
99access_test_new_api_modifiedaccess_test_new_api_modifiedmodel_test_new_api_modifiedbase.group_user1111
100access_test_new_api_modified_lineaccess_test_new_api_modified_linemodel_test_new_api_modified_linebase.group_user1111
101access_test_new_api_related_translation_1access_test_new_api_related_translation_1model_test_new_api_related_translation_11111
102access_test_new_api_related_translation_2access_test_new_api_related_translation_2model_test_new_api_related_translation_21111
103access_test_new_api_related_translation_3access_test_new_api_related_translation_3model_test_new_api_related_translation_31111
104access_test_new_api_indexed_translationaccess_test_new_api_indexed_translationmodel_test_new_api_indexed_translation1111
105access_test_new_api_empty_characcess_test_new_api_empty_charmodel_test_new_api_empty_char1111
106access_test_new_api_courseaccess_test_new_api_coursemodel_test_new_api_coursebase.group_user1111
107access_test_new_api_lessonaccess_test_new_api_lessonmodel_test_new_api_lessonbase.group_user1111
108access_test_new_api_personaccess_test_new_api_personmodel_test_new_api_personbase.group_user1111
109access_test_new_api_employeraccess_test_new_api_employermodel_test_new_api_employerbase.group_user1111
110public_access_test_new_api_courseaccess_test_new_api_coursemodel_test_new_api_coursebase.group_public1000