【问题标题】:How to make one field(field_3) 'User' and 'Admin' editable in Openerp-7如何在 Openerp-7 中使一个字段(field_3)“用户”和“管理员”可编辑
【发布时间】:2015-11-20 07:32:13
【问题描述】:

我创建了一个名为“HM-1”的自定义标题菜单

我创建了一个名为“菜单 1”的菜单 在“菜单 1”中,我创建了 3 个字段,称为 field_1 fileds_2 filed_3。

I created a 'User' and i have two users now
1. Admin
2. User

我的问题是'如何在 Openerp-7 中使一个字段(field_3)'用户'和'管理员'可编辑' 'User' 中的剩余字段应该是只读 field_3 应该是可编辑的。

如何做到这一点?

【问题讨论】:

    标签: openerp openerp-7


    【解决方案1】:

    我首先想到的是覆盖 fields_view_get 并根据 self.env.user 组更改 field_1 和 field_2 的只读和修饰符属性。当然,您需要将用户分配到特定组,与管理员不同。

    class example_class(models.Model):
    
        def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
            res = super(example_class, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
            group = self.pool['ir.model.data'].xmlid_to_object(cr, uid, 'your_group', raise_if_not_found=True, context=context) 
            if view_type == 'form' and group in self.env.user.groups_id:
                doc = etree.XML(res['arch'])
                #this for cycle must be repeated for each field you need to make readonly
                for node in doc.xpath("//field[@name='field_2']"):
                    if 'modifiers' in node.attrib:
                        text = node.attrib['modifiers']
                        j = json.loads(text)
                        j['readonly'] = '1'
                    else:
                        j = {'readonly': '1'}
                    node.attrib['modifiers'] = json.dumps(j)
                res['arch'] = etree.tostring(doc)
            return res
    

    【讨论】:

    • 谢谢,能否请您发送任何示例。
    • 谢谢,xml字段中应该定义什么?
    • 并非如此。只需像往常一样将字段放入表单中(当然您需要为菜单/模型创建一个操作,并为模型创建一个表单)。此外,您应该编辑您的问题,因为不清楚哪些字段应该是只读的,具体取决于用户,哪些字段可以始终可编辑...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2014-01-12
    • 2017-05-14
    • 1970-01-01
    相关资源
    最近更新 更多