我有一个布尔字段'已分类'在销售订单和我的想法是,只有我创建的组中的用户'分类报价'可以在树视图中查看分类为真的记录。我创建了两个规则,我不知道它为什么不起作用。这是代码:
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="sale_order_rule_group_classified_quotations" model="ir.rule">
<field name="name">sale_order_rule_group_classified_quotations</field>
<field name="model_id" search="[('model','=','sale.order')]" model="ir.model"/>
<field name="groups" eval="[(4,ref('group_classified_quotations'))]"/>
<field name="domain_force">['|',('classified','=',True),('classified','=',False)]</field>
</record>
<record id="sale_order_rule_no_group" model="ir.rule">
<field name="name">sale_order_rule_no_group</field>
<field name="model_id" search="[('model','=','sale.order')]" model="ir.model"/>
<field name="groups" eval="[(4,ref('base.group_user'))]"/>
<field name="domain_force">[('classified','=',False)]</field>
</record>
</data>
</openerp>
我做错了什么?
答案 0 :(得分:0)
你没有告诉它它是如何工作的(或者它现在的表现如何)。另外,如果您想允许查看规则上的所有记录,则应在domain_force
上使用此[(1,'=',1)]
:True
,这意味着所有记录,您无需制作False
或{ {1}}检查。试试这是否有效。
答案 1 :(得分:0)
我最近做过类似的事情但在.py文件中这样做了。
您可以这样做:
def write(self, cr, user, ids, vals, context=None):
if vals.get('classified'):
group_id = self.pool.get('ir.model.data').get_object_reference(cr, 1, 'your_model', 'your_group')
user = self.pool.get('res.users').browse(cr, user, user)
if group_id not in user.groups_id:
raise osv.except_osv(_('Error'), _("Only x user can adjust this field"))
return super(your_model, self).write(cr, user, ids, vals, context=context)