IR_RULES :

- new object to define versatile access rules.
- provide cache to keep fast access.
- associated with user or user group.

The orm layer is modified to use them. This modification and
pre-defined rules in xml data replace the most part of implicit magic
around company_id.

bzr revid: bch-82b118597e13153fff93b20335eea6e53552399b
This commit is contained in:
bch
2007-05-18 12:29:43 +00:00
parent 605fde9553
commit 09849921d1
5 changed files with 153 additions and 2 deletions
@@ -12,5 +12,112 @@
<field name="company_id" ref="base.main_company"/>
</record>
<record model="ir.rule" id="journal_comp_rule">
<field name="name">Journal multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.journal')]" model="ir.model"/>
<field name="field_id" search="[('model','=','account.journal'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="analytic_journal_comp_rule">
<field name="name">Analytic journal multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.analytic.journal')]" model="ir.model"/>
<field name="field_id" search="[('model','=','account.analytic.journal'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="budget_post_comp_rule">
<field name="name">Budget post multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.budget.post')]" model="ir.model"/>
<field name="field_id" search="[('model','=','account.budget.post'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="period_comp_rule">
<field name="name">Period multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.period')]" model="ir.model"/>
<field name="field_id" search="[('model','=','account.period'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="fiscal_year_comp_rule">
<field name="name">Fiscal year multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.fiscalyear')]" model="ir.model"/>
<field name="field_id" search="[('model','=','account.fiscalyear'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="account_comp_rule">
<field name="name">Account multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.account')]" model="ir.model"/>
<field name="field_id" search="[('model','=','account.account'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="tax_comp_rule">
<field name="name">Tax multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.tax')]" model="ir.model"/>
<field name="field_id" search="[('model','=','account.tax'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="tax_code_comp_rule">
<field name="name">Tax code multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.tax.code')]" model="ir.model"/>
<field name="field_id" search="[('model','=','acount.tax.code'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="invoice_comp_rule">
<field name="name">Invoice multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','account.invoice')]" model="ir.model"/>
<field name="field_id" search="[('model','=','account.invoice'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<!-- <record model="ir.rule" id="_comp_rule"> -->
<!-- <field name="name"> multi-company</field> -->
<!-- <field name="type">sub</field> -->
<!-- <field name="model_id" search="[('model','=','')]" model="ir.model"/> -->
<!-- <field name="field_id" search="[('model','=',''),('name','=','company_id')]" model="ir.model.fields"/> -->
<!-- <field name="operator">=</field> -->
<!-- <field name="operand">user.company_id.id</field> -->
<!-- <field name="domain">[('company_id', '=', user.company_id.id)]</field> -->
<!-- </record> -->
</data>
</terp>
@@ -6,7 +6,7 @@
"depends" : ["hr_timesheet_sheet","base", 'multi_company',],
"init_xml" : [],
"demo_xml" : [],
"update_xml" : ["multi_company_hr_timesheet_sheet_view.xml",],
"update_xml" : ["multi_company_hr_timesheet_sheet_view.xml","multi_company_hr_timesheet_sheet_data.xml",],
"active": False,
"installable": True
}
@@ -0,0 +1,18 @@
<?xml version="1.0"?>
<terp>
<data>
<record model="ir.rule" id="timesheet_comp_rule">
<field name="name">Timesheet multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','hr_timesheet_sheet.sheet')]" model="ir.model"/>
<field name="field_id" search="[('model','=','hr_timesheet_sheet.sheet'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
</data>
</terp>
+1 -1
View File
@@ -6,7 +6,7 @@
"depends" : ['project', 'base', 'multi_company',],
"init_xml" : [],
"demo_xml" : [],
"update_xml": ['multi_company_project_view.xml',],
"update_xml": ['multi_company_project_view.xml','multi_company_project_data.xml',],
"active": False,
"installable": True
}
@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<terp>
<data>
<record model="ir.rule" id="project_comp_rule">
<field name="name">Project multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','project.project')]" model="ir.model"/>
<field name="field_id" search="[('model','=','project.project'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
<record model="ir.rule" id="task_comp_rule">
<field name="name" >Task multi-company</field>
<field name="type">sub</field>
<field name="model_id" search="[('model','=','project.task')]" model="ir.model"/>
<field name="field_id" search="[('model','=','project.task'),('name','=','company_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.company_id.id</field>
<field name="domain">[('company_id', '=', user.company_id.id)]</field>
</record>
</data>
</terp>