Store model and field name on ir.model.field.access
This commit is contained in:
+24
-12
@@ -214,21 +214,25 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_type_amount">
|
||||
<field name="field" search="[('model.model', '=', 'account.account.type'), ('name', '=', 'amount')]"/>
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="field">amount</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_type_amount_account">
|
||||
<field name="field" search="[('model.model', '=', 'account.account.type'), ('name', '=', 'amount')]"/>
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="field">amount</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_type_amount_cmp">
|
||||
<field name="field" search="[('model.model', '=', 'account.account.type'), ('name', '=', 'amount_cmp')]"/>
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="field">amount_cmp</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_type_amount_cmp_account">
|
||||
<field name="field" search="[('model.model', '=', 'account.account.type'), ('name', '=', 'amount_cmp')]"/>
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="field">amount_cmp</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
@@ -511,41 +515,49 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_balance">
|
||||
<field name="field" search="[('model.model', '=', 'account.account'), ('name', '=', 'balance')]"/>
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">balance</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_balance_account">
|
||||
<field name="field" search="[('model.model', '=', 'account.account'), ('name', '=', 'balance')]"/>
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">balance</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_credit">
|
||||
<field name="field" search="[('model.model', '=', 'account.account'), ('name', '=', 'credit')]"/>
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">credit</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_credit_account">
|
||||
<field name="field" search="[('model.model', '=', 'account.account'), ('name', '=', 'credit')]"/>
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">credit</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_debit">
|
||||
<field name="field" search="[('model.model', '=', 'account.account'), ('name', '=', 'debit')]"/>
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">debit</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_debit_account">
|
||||
<field name="field" search="[('model.model', '=', 'account.account'), ('name', '=', 'debit')]"/>
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">debit</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_amount_second_currency">
|
||||
<field name="field" search="[('model.model', '=', 'account.account'), ('name', '=', 'amount_second_currency')]"/>
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">amount_second_currency</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_amount_second_currency_account">
|
||||
<field name="field" search="[('model.model', '=', 'account.account'), ('name', '=', 'amount_second_currency')]"/>
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">amount_second_currency</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
@@ -16,41 +16,49 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_company_receivable">
|
||||
<field name="field" search="[('model.model', '=', 'company.company'), ('name', '=', 'receivable')]"/>
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">receivable</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_company_receivable_account">
|
||||
<field name="field" search="[('model.model', '=', 'company.company'), ('name', '=', 'receivable')]"/>
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">receivable</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_company_payable">
|
||||
<field name="field" search="[('model.model', '=', 'company.company'), ('name', '=', 'payable')]"/>
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">payable</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_company_payable_account">
|
||||
<field name="field" search="[('model.model', '=', 'company.company'), ('name', '=', 'payable')]"/>
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">payable</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_company_receivable_today">
|
||||
<field name="field" search="[('model.model', '=', 'company.company'), ('name', '=', 'receivable_today')]"/>
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">receivable_today</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_company_receivable_today_account">
|
||||
<field name="field" search="[('model.model', '=', 'company.company'), ('name', '=', 'receivable_today')]"/>
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">receivable_today</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_company_payable_today">
|
||||
<field name="field" search="[('model.model', '=', 'company.company'), ('name', '=', 'payable_today')]"/>
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">payable_today</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_company_payable_today_account">
|
||||
<field name="field" search="[('model.model', '=', 'company.company'), ('name', '=', 'payable_today')]"/>
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">payable_today</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
+20
-10
@@ -16,60 +16,70 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_accounts">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'accounts')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">accounts</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_accounts_account_party">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'accounts')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">accounts</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_account_payable">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'account_payable')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">account_payable</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_account_payable_account_party">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'account_payable')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">account_payable</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_account_receivable">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'account_receivable')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">account_receivable</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_account_receivable_account_party">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'account_receivable')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">account_receivable</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_customer_tax_rule">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'customer_tax_rule')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">customer_tax_rule</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_customer_tax_rule_account_party">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'customer_tax_rule')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">customer_tax_rule</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_supplier_tax_rule">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'supplier_tax_rule')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">supplier_tax_rule</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_supplier_tax_rule_account_party">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'supplier_tax_rule')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">supplier_tax_rule</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -20,15 +20,15 @@ this repository contains the full copyright notices and license terms. -->
|
||||
|
||||
<record model="ir.model.field.access"
|
||||
id="model_field_access_default_credit_limit_amount">
|
||||
<field name="field"
|
||||
search="[('model.model', '=', 'account.configuration'), ('name', '=', 'default_credit_limit_amount')]"/>
|
||||
<field name="model">account.configuration</field>
|
||||
<field name="field">default_credit_limit_amount</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access"
|
||||
id="model_field_access_default_credit_limit_amount_group_credit_limit">
|
||||
<field name="field"
|
||||
search="[('model.model', '=', 'account.configuration'), ('name', '=', 'default_credit_limit_amount')]"/>
|
||||
<field name="model">account.configuration</field>
|
||||
<field name="field">default_credit_limit_amount</field>
|
||||
<field name="group" ref="group_credit_limit"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -11,15 +11,15 @@ this repository contains the full copyright notices and license terms. -->
|
||||
|
||||
<record model="ir.model.field.access"
|
||||
id="model_field_access_credit_limit_amount">
|
||||
<field name="field"
|
||||
search="[('model.model', '=', 'party.party'), ('name', '=', 'credit_limit_amount')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">credit_limit_amount</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access"
|
||||
id="model_field_access_credit_limit_amount_group_credit_limit">
|
||||
<field name="field"
|
||||
search="[('model.model', '=', 'party.party'), ('name', '=', 'credit_limit_amount')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">credit_limit_amount</field>
|
||||
<field name="group" ref="group_credit_limit"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -73,7 +73,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_private_key">
|
||||
<field name="field" search="[('name', '=', 'private_key'), ('model.model', '=', 'account.payment.braintree.account')]"/>
|
||||
<field name="model">account.payment.braintree.account</field>
|
||||
<field name="field">private_key</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
@@ -81,7 +82,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_private_key_account_admin">
|
||||
<field name="field" search="[('name', '=', 'private_key'), ('model.model', '=', 'account.payment.braintree.account')]"/>
|
||||
<field name="model">account.payment.braintree.account</field>
|
||||
<field name="field">private_key</field>
|
||||
<field name="group" ref="account.group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -185,8 +185,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_secret_key">
|
||||
<field name="field"
|
||||
search="[('name', '=', 'secret_key'), ('model.model', '=', 'account.payment.stripe.account')]"/>
|
||||
<field name="model">account.payment.stripe.account</field>
|
||||
<field name="field">secret_key</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
@@ -194,8 +194,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_secret_key_account_admin">
|
||||
<field name="field"
|
||||
search="[('name', '=', 'secret_key'), ('model.model', '=', 'account.payment.stripe.account')]"/>
|
||||
<field name="model">account.payment.stripe.account</field>
|
||||
<field name="field">secret_key</field>
|
||||
<field name="group" ref="account.group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -50,12 +50,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_template_account_category">
|
||||
<field name="field" search="[('model.model', '=', 'product.template'), ('name', '=', 'account_category')]"/>
|
||||
<field name="model">product.template</field>
|
||||
<field name="field">account_category</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_template_account_category_account_product_admin">
|
||||
<field name="field" search="[('model.model', '=', 'product.template'), ('name', '=', 'account_category')]"/>
|
||||
<field name="model">product.template</field>
|
||||
<field name="field">account_category</field>
|
||||
<field name="group" ref="group_account_product_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -10,108 +10,126 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_type">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_type')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_type</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_type_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_type')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_type</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_warehouse_country">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_warehouse_country')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_warehouse_country</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_warehouse_country_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_warehouse_country')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_warehouse_country</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_country">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_country')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_country</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_country_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_country')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_country</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_subdivision">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_subdivision')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_subdivision</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_subdivision_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_subdivision')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_subdivision</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_tariff_code">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_tariff_code')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_tariff_code</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_tariff_code_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_tariff_code')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_tariff_code</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_transaction">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_transaction')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_transaction</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_transaction_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_transaction')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_transaction</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_additional_unit">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_additional_unit')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_additional_unit</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_additional_unit_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_additional_unit')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_additional_unit</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_country_of_origin">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_country_of_origin')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_country_of_origin</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_country_of_origin_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_country_of_origin')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_country_of_origin</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_vat">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_vat')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_vat</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_vat_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_vat')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_vat</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
@@ -126,24 +144,28 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_transport">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_transport')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_transport</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_transport_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_transport')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_transport</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_incoterm">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_incoterm')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_incoterm</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="account_stock_move_intrastat_incoterm_account">
|
||||
<field name="field" search="[('model.model', '=', 'stock.move'), ('name', '=', 'intrastat_incoterm')]"/>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="field">intrastat_incoterm</field>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -10,12 +10,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_supplier_tax_group_on_cash_basis">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'supplier_tax_group_on_cash_basis')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">supplier_tax_group_on_cash_basis</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_supplier_tax_group_on_cash_basis_account_party">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'supplier_tax_group_on_cash_basis')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">supplier_tax_group_on_cash_basis</field>
|
||||
<field name="group" ref="account.group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -10,7 +10,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_bank_accounts">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'bank_accounts')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">bank_accounts</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
@@ -18,7 +19,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
<record model="ir.model.field.access"
|
||||
id="access_party_bank_accounts_bank_admin">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'bank_accounts')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">bank_accounts</field>
|
||||
<field name="group" ref="group_bank_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -10,7 +10,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_cron_password">
|
||||
<field name="field" search="[('name', '=', 'rs_password'), ('model.model', '=', 'currency.cron')]"/>
|
||||
<field name="model">currency.cron</field>
|
||||
<field name="field">rs_password</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
@@ -18,7 +19,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_cron_password_currency_admin">
|
||||
<field name="field" search="[('name', '=', 'rs_password'), ('model.model', '=', 'currency.cron')]"/>
|
||||
<field name="model">currency.cron</field>
|
||||
<field name="field">rs_password</field>
|
||||
<field name="group" ref="currency.group_currency_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -10,12 +10,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_supplier_currency">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'supplier_currency')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">supplier_currency</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_supplier_currency_group_sale">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'supplier_currency')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">supplier_currency</field>
|
||||
<field name="group" ref="group_purchase"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -286,12 +286,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_purchase_purchase_invoices_ignored">
|
||||
<field name="field" search="[('model.model', '=', 'purchase.purchase'), ('name', '=', 'invoices_ignored')]"/>
|
||||
<field name="model">purchase.purchase</field>
|
||||
<field name="field">invoices_ignored</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_purchase_purchase_invoices_ignored_purchase_admin">
|
||||
<field name="field" search="[('model.model', '=', 'purchase.purchase'), ('name', '=', 'invoices_ignored')]"/>
|
||||
<field name="model">purchase.purchase</field>
|
||||
<field name="field">invoices_ignored</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
@@ -499,12 +501,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_purchase_line_moves_ignored">
|
||||
<field name="field" search="[('model.model', '=', 'purchase.line'), ('name', '=', 'moves_ignored')]"/>
|
||||
<field name="model">purchase.line</field>
|
||||
<field name="field">moves_ignored</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_purchase_line_moves_ignored_purchase_admin">
|
||||
<field name="field" search="[('model.model', '=', 'purchase.line'), ('name', '=', 'moves_ignored')]"/>
|
||||
<field name="model">purchase.line</field>
|
||||
<field name="field">moves_ignored</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
+12
-6
@@ -22,36 +22,42 @@ this repository contains the full copyright notices and license terms. -->
|
||||
icon="tryton-list"/>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_sale_invoice_method">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_invoice_method')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_invoice_method</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_sale_invoice_method_group_sale">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_invoice_method')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_invoice_method</field>
|
||||
<field name="group" ref="group_sale"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_sale_shipment_method">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_shipment_method')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_shipment_method</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_sale_shipment_method_group_sale">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_shipment_method')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_shipment_method</field>
|
||||
<field name="group" ref="group_sale"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_customer_currency">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'customer_currency')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">customer_currency</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_customer_currency_group_sale">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'customer_currency')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">customer_currency</field>
|
||||
<field name="group" ref="group_sale"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -272,12 +272,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_sale_sale_invoices_ignored">
|
||||
<field name="field" search="[('model.model', '=', 'sale.sale'), ('name', '=', 'invoices_ignored')]"/>
|
||||
<field name="model">sale.sale</field>
|
||||
<field name="field">invoices_ignored</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_sale_sale_invoices_ignored_sale_admin">
|
||||
<field name="field" search="[('model.model', '=', 'sale.sale'), ('name', '=', 'invoices_ignored')]"/>
|
||||
<field name="model">sale.sale</field>
|
||||
<field name="field">invoices_ignored</field>
|
||||
<field name="group" ref="group_sale_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
@@ -429,12 +431,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_sale_line_moves_ignored">
|
||||
<field name="field" search="[('model.model', '=', 'sale.line'), ('name', '=', 'moves_ignored')]"/>
|
||||
<field name="model">sale.line</field>
|
||||
<field name="field">moves_ignored</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_sale_line_moves_ignored_sale_admin">
|
||||
<field name="field" search="[('model.model', '=', 'sale.line'), ('name', '=', 'moves_ignored')]"/>
|
||||
<field name="model">sale.line</field>
|
||||
<field name="field">moves_ignored</field>
|
||||
<field name="group" ref="group_sale_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -10,12 +10,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_sale_invoice_term">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_invoice_term')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_invoice_term</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_sale_invoice_term_group_sale">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_invoice_term')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_invoice_term</field>
|
||||
<field name="group" ref="sale.group_sale"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -11,24 +11,28 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_sale_price_lists">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_price_lists')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_price_lists</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_sale_price_lists_group_sale">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_price_lists')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_price_lists</field>
|
||||
<field name="group" ref="sale.group_sale"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_sale_price_list">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_price_list')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_price_list</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_sale_price_list_group_sale">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_price_list')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_price_list</field>
|
||||
<field name="group" ref="sale.group_sale"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -10,12 +10,14 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_sale_shipment_cost_method">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_shipment_cost_method')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_shipment_cost_method</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_sale_shipment_cost_method_group_sale">
|
||||
<field name="field" search="[('model.model', '=', 'party.party'), ('name', '=', 'sale_shipment_cost_method')]"/>
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">sale_shipment_cost_method</field>
|
||||
<field name="group" ref="sale.group_sale"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -38,15 +38,15 @@ this repository contains the full copyright notices and license terms. -->
|
||||
</record>
|
||||
<record model="ir.model.field.access"
|
||||
id="model_field_access_employee_cost_price">
|
||||
<field name="field"
|
||||
search="[('model.model', '=', 'company.employee'), ('name', '=', 'cost_price')]"/>
|
||||
<field name="model">company.employee</field>
|
||||
<field name="field">cost_price</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access"
|
||||
id="model_field_access_employee_cost_price_admin">
|
||||
<field name="field"
|
||||
search="[('model.model', '=', 'company.employee'), ('name', '=', 'cost_price')]"/>
|
||||
<field name="model">company.employee</field>
|
||||
<field name="field">cost_price</field>
|
||||
<field name="group" ref="company.group_employee_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -5,15 +5,15 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<record model="ir.model.field.access"
|
||||
id="model_field_access_timesheet_cost_price">
|
||||
<field name="field"
|
||||
search="[('model.model', '=', 'timesheet.line'), ('name', '=', 'cost_price')]"/>
|
||||
<field name="model">timesheet.line</field>
|
||||
<field name="field">cost_price</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access"
|
||||
id="model_field_access_timesheet_cost_price_admin">
|
||||
<field name="field"
|
||||
search="[('model.model', '=', 'timesheet.line'), ('name', '=', 'cost_price')]"/>
|
||||
<field name="model">timesheet.line</field>
|
||||
<field name="field">cost_price</field>
|
||||
<field name="group" ref="party.group_party_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
* Store model and field name on ir.model.field.access
|
||||
* Store model name on ir.model.access
|
||||
* Store model name on ir.model.field
|
||||
* Add fmany2one field
|
||||
|
||||
+46
-15
@@ -740,11 +740,21 @@ class ModelAccess(
|
||||
ModelView._fields_view_get_cache.clear()
|
||||
|
||||
|
||||
class ModelFieldAccess(DeactivableMixin, ModelSQL, ModelView):
|
||||
class ModelFieldAccess(
|
||||
fields.fmany2one(
|
||||
'model_ref', 'model', 'ir.model,model', "Model",
|
||||
required=True, ondelete='CASCADE'),
|
||||
fields.fmany2one(
|
||||
'field_ref', 'field,model', 'ir.model.field,name,model', "Field",
|
||||
required=True, ondelete='CASCADE',
|
||||
domain=[
|
||||
('model', '=', Eval('model')),
|
||||
]),
|
||||
DeactivableMixin, ModelSQL, ModelView):
|
||||
"Model Field Access"
|
||||
__name__ = 'ir.model.field.access'
|
||||
field = fields.Many2One('ir.model.field', 'Field', required=True,
|
||||
ondelete='CASCADE')
|
||||
model = fields.Char("Model", required=True)
|
||||
field = fields.Char("Field", required=True)
|
||||
group = fields.Many2One('res.group', 'Group', ondelete='CASCADE')
|
||||
perm_read = fields.Boolean('Read Access')
|
||||
perm_write = fields.Boolean('Write Access')
|
||||
@@ -756,7 +766,32 @@ class ModelFieldAccess(DeactivableMixin, ModelSQL, ModelView):
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.__access__.add('field')
|
||||
cls.__access__.add('field_ref')
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module):
|
||||
pool = Pool()
|
||||
Field = pool.get('ir.model.field')
|
||||
transaction = Transaction()
|
||||
cursor = transaction.connection.cursor()
|
||||
table_h = cls.__table_handler__(module)
|
||||
table = cls.__table__()
|
||||
field = Field.__table__()
|
||||
|
||||
# Migration from 7.0: field as char
|
||||
if (table_h.column_exist('field')
|
||||
and table_h.column_is_type('field', 'INTEGER')):
|
||||
table_h.column_rename('field', '_temp_field')
|
||||
table_h.add_column('model', 'VARCHAR')
|
||||
table_h.add_column('field', 'VARCHAR')
|
||||
cursor.execute(*table.update(
|
||||
[table.model, table.field],
|
||||
[field.model, field.name],
|
||||
from_=[field],
|
||||
where=table._temp_field == field.id))
|
||||
table_h.drop_column('_temp_field')
|
||||
|
||||
super().__register__(module)
|
||||
|
||||
@classmethod
|
||||
def check_xml_record(cls, field_accesses, values):
|
||||
@@ -779,11 +814,11 @@ class ModelFieldAccess(DeactivableMixin, ModelSQL, ModelView):
|
||||
return True
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return self.field.rec_name
|
||||
return self.field_ref.rec_name
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
return [('field',) + tuple(clause[1:])]
|
||||
return [('field_ref.rec_name', *clause[1:])]
|
||||
|
||||
@classmethod
|
||||
def get_access(cls, models):
|
||||
@@ -794,10 +829,8 @@ class ModelFieldAccess(DeactivableMixin, ModelSQL, ModelView):
|
||||
lambda: defaultdict(lambda: True)))
|
||||
|
||||
pool = Pool()
|
||||
ModelField = pool.get('ir.model.field')
|
||||
User = pool.get('res.user')
|
||||
field_access = cls.__table__()
|
||||
model_field = ModelField.__table__()
|
||||
|
||||
groups = User.get_groups()
|
||||
|
||||
@@ -813,11 +846,9 @@ class ModelFieldAccess(DeactivableMixin, ModelSQL, ModelView):
|
||||
default = {}
|
||||
accesses = dict((m, default) for m in models)
|
||||
cursor = Transaction().connection.cursor()
|
||||
cursor.execute(*field_access.join(model_field,
|
||||
condition=field_access.field == model_field.id
|
||||
).select(
|
||||
model_field.model,
|
||||
model_field.name,
|
||||
cursor.execute(*field_access.select(
|
||||
field_access.model,
|
||||
field_access.field,
|
||||
Max(Case(
|
||||
(field_access.perm_read == Literal(True), 1),
|
||||
else_=0)),
|
||||
@@ -830,11 +861,11 @@ class ModelFieldAccess(DeactivableMixin, ModelSQL, ModelView):
|
||||
Max(Case(
|
||||
(field_access.perm_delete == Literal(True), 1),
|
||||
else_=0)),
|
||||
where=model_field.model.in_(models)
|
||||
where=field_access.model.in_(models)
|
||||
& (field_access.active == Literal(True))
|
||||
& (field_access.group.in_(groups or [-1])
|
||||
| (field_access.group == Null)),
|
||||
group_by=[model_field.model, model_field.name]))
|
||||
group_by=[field_access.model, field_access.field]))
|
||||
for m, f, r, w, c, d in cursor:
|
||||
accesses[m][f] = {'read': r, 'write': w, 'create': c, 'delete': d}
|
||||
for model, maccesses in accesses.items():
|
||||
|
||||
@@ -154,7 +154,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="name">Access</field>
|
||||
<field name="res_model">ir.model.field.access</field>
|
||||
<field name="domain"
|
||||
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('field', '=', Eval('active_id')), ('field', 'in', Eval('active_ids')))]"
|
||||
eval="[('field_ref.id', 'in', Eval('active_ids'))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword"
|
||||
|
||||
@@ -2,12 +2,15 @@
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form col="6">
|
||||
<label name="field"/>
|
||||
<field name="field"/>
|
||||
<label name="group"/>
|
||||
<field name="group"/>
|
||||
<label name="model_ref"/>
|
||||
<field name="model_ref"/>
|
||||
<label name="field_ref"/>
|
||||
<field name="field_ref"/>
|
||||
<label name="active"/>
|
||||
<field name="active"/>
|
||||
|
||||
<label name="group"/>
|
||||
<field name="group"/>
|
||||
<group id="checkboxes" colspan="6">
|
||||
<label name="perm_read"/>
|
||||
<field name="perm_read"/>
|
||||
|
||||
@@ -6,6 +6,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="perm_write"/>
|
||||
<field name="perm_create"/>
|
||||
<field name="perm_delete"/>
|
||||
<field name="field" expand="1"/>
|
||||
<field name="model_ref" expand="1"/>
|
||||
<field name="field_ref" expand="1"/>
|
||||
<field name="group" expand="1"/>
|
||||
</tree>
|
||||
|
||||
@@ -415,23 +415,6 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
def setUpClass(cls):
|
||||
activate_module('tests')
|
||||
|
||||
def _field(self, name):
|
||||
pool = Pool()
|
||||
Field = pool.get('ir.model.field')
|
||||
field1, = Field.search([
|
||||
('model', '=', 'test.access'),
|
||||
('name', '=', name),
|
||||
])
|
||||
return field1
|
||||
|
||||
@property
|
||||
def field1(self):
|
||||
return self._field('field1')
|
||||
|
||||
@property
|
||||
def field2(self):
|
||||
return self._field('field2')
|
||||
|
||||
@property
|
||||
def group(self):
|
||||
pool = Pool()
|
||||
@@ -469,7 +452,8 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
TestAccess = pool.get('test.access')
|
||||
record, = TestAccess.create([{}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -485,7 +469,8 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
TestAccess = pool.get('test.access')
|
||||
record, = TestAccess.create([{}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -501,12 +486,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
TestAccess = pool.get('test.access')
|
||||
record, = TestAccess.create([{}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: False,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -522,12 +509,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
TestAccess = pool.get('test.access')
|
||||
record, = TestAccess.create([{}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -543,12 +532,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
TestAccess = pool.get('test.access')
|
||||
record, = TestAccess.create([{}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -564,12 +555,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
TestAccess = pool.get('test.access')
|
||||
record, = TestAccess.create([{}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: False,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -585,7 +578,8 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
TestAccess = pool.get('test.access')
|
||||
record, = TestAccess.create([{}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -601,7 +595,8 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
TestAccess = pool.get('test.access')
|
||||
record, = TestAccess.create([{}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -619,12 +614,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -642,12 +639,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: False,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -665,12 +664,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': group.id,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -691,12 +692,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
'parent': group.id,
|
||||
})
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: False,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -714,12 +717,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field2.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field2',
|
||||
'group': None,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -737,12 +742,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: False,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field2.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field2',
|
||||
'group': None,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -760,12 +767,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': None,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field2.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field2',
|
||||
'group': None,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -783,12 +792,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field2.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field2',
|
||||
'group': None,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -806,12 +817,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field2.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field2',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
@@ -829,12 +842,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: False,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field2.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field2',
|
||||
'group': self.group.id,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -852,12 +867,14 @@ class _ModelFieldAccessTestCase(unittest.TestCase):
|
||||
record, = TestAccess.create([{}])
|
||||
group, = Group.create([{'name': 'Test'}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field1.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field1',
|
||||
'group': self.group.id,
|
||||
self._perm: True,
|
||||
}])
|
||||
FieldAccess.create([{
|
||||
'field': self.field2.id,
|
||||
'model': 'test.access',
|
||||
'field': 'field2',
|
||||
'group': None,
|
||||
self._perm: False,
|
||||
}])
|
||||
@@ -911,14 +928,10 @@ class ModelFieldAccessReadTestCase(_ModelFieldAccessTestCase):
|
||||
"Test access on search relate"
|
||||
pool = Pool()
|
||||
TestAccess = pool.get('test.access')
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
field, = Field.search([
|
||||
('model', '=', 'test.access.relate'),
|
||||
('name', '=', 'value'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': 'test.access.relate',
|
||||
'field': 'value',
|
||||
'perm_read': True,
|
||||
}])
|
||||
|
||||
@@ -933,14 +946,10 @@ class ModelFieldAccessReadTestCase(_ModelFieldAccessTestCase):
|
||||
"Test access on search relate"
|
||||
pool = Pool()
|
||||
TestAccess = pool.get('test.access')
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
field, = Field.search([
|
||||
('model', '=', 'test.access.relate'),
|
||||
('name', '=', 'value'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': 'test.access.relate',
|
||||
'field': 'value',
|
||||
'perm_read': False,
|
||||
}])
|
||||
|
||||
@@ -960,14 +969,10 @@ class ModelFieldAccessReadTestCase(_ModelFieldAccessTestCase):
|
||||
"Test access on search relate with a parent field"
|
||||
pool = Pool()
|
||||
TestAccess = pool.get('test.access')
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
field, = Field.search([
|
||||
('model', '=', 'test.access.relate'),
|
||||
('name', '=', 'parent'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': 'test.access.relate',
|
||||
'field': 'parent',
|
||||
'perm_read': True,
|
||||
}])
|
||||
|
||||
@@ -978,14 +983,10 @@ class ModelFieldAccessReadTestCase(_ModelFieldAccessTestCase):
|
||||
"Test no access on search relate with a parent field"
|
||||
pool = Pool()
|
||||
TestAccess = pool.get('test.access')
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
field, = Field.search([
|
||||
('model', '=', 'test.access.relate'),
|
||||
('name', '=', 'parent'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': 'test.access.relate',
|
||||
'field': 'parent',
|
||||
'perm_read': False,
|
||||
}])
|
||||
|
||||
|
||||
@@ -236,18 +236,14 @@ class CopyTestCase(unittest.TestCase):
|
||||
def test_no_acccess_copy_with_custom_value(self):
|
||||
"Test copying field with no access and custom value"
|
||||
pool = Pool()
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
TestAccess = pool.get('test.copy.access')
|
||||
|
||||
record, = TestAccess.create([{'name': 'foo'}])
|
||||
|
||||
field, = Field.search([
|
||||
('model.model', '=', 'test.copy.access'),
|
||||
('name', '=', 'name'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': 'test.copy.access',
|
||||
'field': 'name',
|
||||
'group': None,
|
||||
'perm_read': True,
|
||||
'perm_write': False,
|
||||
@@ -260,16 +256,12 @@ class CopyTestCase(unittest.TestCase):
|
||||
def test_no_acccess_copy_with_default(self):
|
||||
"Test copying field with no access but default value"
|
||||
pool = Pool()
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
TestAccess = pool.get('test.copy.access')
|
||||
|
||||
field, = Field.search([
|
||||
('model.model', '=', 'test.copy.access'),
|
||||
('name', '=', 'name'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': 'test.copy.access',
|
||||
'field': 'name',
|
||||
'group': None,
|
||||
'perm_read': True,
|
||||
'perm_write': False,
|
||||
@@ -284,18 +276,14 @@ class CopyTestCase(unittest.TestCase):
|
||||
def test_no_acccess_copy_with_defaults(self):
|
||||
"Test copying field with no access and defaults"
|
||||
pool = Pool()
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
TestAccess = pool.get('test.copy.access')
|
||||
|
||||
record, = TestAccess.create([{}])
|
||||
|
||||
field, = Field.search([
|
||||
('model.model', '=', 'test.copy.access'),
|
||||
('name', '=', 'name'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': 'test.copy.access',
|
||||
'field': 'name',
|
||||
'group': None,
|
||||
'perm_read': True,
|
||||
'perm_write': False,
|
||||
@@ -309,18 +297,14 @@ class CopyTestCase(unittest.TestCase):
|
||||
def test_copy_with_no_read_access(self):
|
||||
"Test copying field with no read access"
|
||||
pool = Pool()
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
TestAccess = pool.get('test.copy.access')
|
||||
|
||||
record, = TestAccess.create([{}])
|
||||
|
||||
field, = Field.search([
|
||||
('model.model', '=', 'test.copy.access'),
|
||||
('name', '=', 'name'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': 'test.copy.access',
|
||||
'field': 'name',
|
||||
'group': None,
|
||||
'perm_read': False,
|
||||
'perm_write': False,
|
||||
|
||||
@@ -268,15 +268,11 @@ class ModelTestCase(unittest.TestCase):
|
||||
"Test field is readonly when no write access on it"
|
||||
pool = Pool()
|
||||
Model = pool.get('test.model')
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
|
||||
field, = Field.search([
|
||||
('name', '=', 'name'),
|
||||
('model.model', '=', Model.__name__),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'model': Model.__name__,
|
||||
'field': 'name',
|
||||
'perm_write': False,
|
||||
}])
|
||||
|
||||
|
||||
@@ -596,18 +596,14 @@ class ModelView(unittest.TestCase):
|
||||
"Testing circular depends are removed when user has no access"
|
||||
pool = Pool()
|
||||
CircularDepends = pool.get('test.modelview.circular_depends')
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
|
||||
foo_field, = Field.search([
|
||||
('model.model', '=', 'test.modelview.circular_depends'),
|
||||
('name', '=', 'foo'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': foo_field.id,
|
||||
'group': None,
|
||||
'perm_read': False,
|
||||
}])
|
||||
'model': CircularDepends.__name__,
|
||||
'field': 'foo',
|
||||
'group': None,
|
||||
'perm_read': False,
|
||||
}])
|
||||
|
||||
fields = CircularDepends.fields_view_get(view_type='form')['fields']
|
||||
|
||||
@@ -641,18 +637,14 @@ class ModelView(unittest.TestCase):
|
||||
"Testing buttons are removed when dependant fields are not accesible"
|
||||
pool = Pool()
|
||||
Button = pool.get('test.modelview.button_depends')
|
||||
Field = pool.get('ir.model.field')
|
||||
FieldAccess = pool.get('ir.model.field.access')
|
||||
|
||||
field, = Field.search([
|
||||
('model.model', '=', Button.__name__),
|
||||
('name', '=', 'value'),
|
||||
])
|
||||
FieldAccess.create([{
|
||||
'field': field.id,
|
||||
'group': None,
|
||||
'perm_read': False,
|
||||
}])
|
||||
'model': Button.__name__,
|
||||
'field': 'value',
|
||||
'group': None,
|
||||
'perm_read': False,
|
||||
}])
|
||||
|
||||
arch = Button.fields_view_get(view_type='form')['arch']
|
||||
parser = etree.XMLParser()
|
||||
|
||||
Reference in New Issue
Block a user