odoo [v8]团体规则

时间:2015-07-01 19:26:22

标签: security openerp odoo rules

我有一个布尔字段'已分类'在销售订单和我的想法是,只有我创建的组中的用户'分类报价'可以在树视图中查看分类为真的记录。我创建了两个规则,我不知道它为什么不起作用。这是代码:

<?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> 

我做错了什么?

2 个答案:

答案 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)