I have a module that adds a flag to res.partner
. If the flag for an object is enabled, that object only has to be visible to users in a Priviliged group. In addition, as only those users can set which objects have this flag enabled, they are the only ones who should see the flag field in the views.
I'm using OpenERP 7 and read here (://doc openerp com /trunk/server/04_security/) the use of groups
properties, both at object-level and view-level.
But when I open the view with a non-Priviliged user, I get an Access Denied by ACLs for operation: read, uid: 5, model: res.partner, fields: priviliged
error.
How can I manage to do this? Am I doing something wrong?
partner_modif.py
:
class partner_modif(osv.osv):
_name = "res.partner"
_inherit = "res.partner"
_columns = {
'priviliged': fields.boolean('Priviliged', required=False, groups="my-module.priviliged_users")
}
_defaults = {
'priviliged': lambda *a: 0
}
partner_modif()
partner_view_modif.xml
:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_partner_address_form1_inherit" model="ir.ui.view">
<field name="name">res.partner.address.form1.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<field name="function" position="after">
<field name="priviliged" groups="my-module.priviliged_users"/>
</field>
</field>
</record>
<record id="my-module.priviliged_users" model="res.groups">
<field name="name">Priviliged</field>
<field name="comment">Priviliged users</field>
</record>
<record model="ir.rule" id="partner_priviliged_users">
<field name="name">Priviliged users see all partners</field>
<field name="model_id" ref="model_res_partner"/>
<field name="domain_force">[(True, '=', True)]</field>
<field name="groups" eval="[(4, ref('my-module.priviliged_users'))]"/>
</record>
<record model="ir.rule" id="partner_unpriviliged_users">
<field name="name">Non priviliged users see un-priviliged partners</field>
<field name="model_id" ref="model_res_partner"/>
<field name="domain_force">[('priviliged', '=', False)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
</data>
</openerp>
Have you create a ir_model_access.csv in the folder security of your module ?
@Xsias: no, I haven't. Never read about. I'm searching now, if you have any recommended link, it'll be appreciated :)
1- How to check login user group in odoo: https://goo.gl/Ts3qqK
2- How to visible and invisible fields in odoo: https://goo.gl/BCxCpk