onchange方法更新虚拟字段的值

时间:2015-05-26 02:06:14

标签: openerp odoo

我正在研究odoo v8,我正在尝试修改用户表单中的访问权限视图。我想修改表单,这样当我为每个模块的类别选择一个角色时,它将调用onchange方法并更新下面的复选框(技术设置,可用性和其他)。目前所做的更改只会在我保存表单后显示。但是我想让它更新onfly以便管理员在保存到数据库之前进行验证。但是当我从onchange方法返回一个dict时,系统似乎并不知道该字段的存在(例如in_group_1,in_group_2等虚拟字段)。反正有吗?

@api.v7
def check_acl(self, cr, uid, ids, my_field, context=None):
  return {'value': {'in_group_1': True}} 

1 个答案:

答案 0 :(得分:0)

您可以通过此功能检查是否为管理员

 def check_user(self, uid=None):
        if uid is None:
            uid = request.uid
        is_admin = request.registry['res.users']._is_admin(request.cr, uid, [uid])
        if not is_admin:
            raise openerp.exceptions.AccessError("Only administrators can upload a module")

并使用以下参数调用此函数:

uid = request.session.authenticate(request.db, login, password) 
self.check_user(uid)

您可以在onchange中使用此功能

@api.v7
def check_acl(self, cr, uid, ids, my_field, context=None):
   if self.check_user(uid):
       return {'value': {'in_group_1': True}}