odoo 8,对模型的权限问题

时间:2015-12-10 10:43:23

标签: permissions openerp

我正在尝试阅读公司数据:

for company in self.pool('res.company').browse(cr, uid, uid):
    company.vat <=== code breaks here

如果我使用管理员(uid 1)帐户,我会看到company.vat。但是,如果我使用任何其他帐户(具有res.company权限),我会收到一条消息:“您尝试访问的其中一个文档已被删除......”

这是许可问题还是编码错误?请注意,如果我硬编码1代替uid作为浏览功能的参数,它就可以工作。

谢谢

2 个答案:

答案 0 :(得分:0)

尝试这个

from openerp import SUPERUSER_ID

self.pool('res.company').browse(cr, SUPERUSER_ID, uid)

答案 1 :(得分:0)

  1. 首先,如果你的odoo中只有一家公司,默认情况下你创建的时候会创建id为“1”的公司。
  2. 您可以使用“管理员”访问该记录,因为管理员用户的ID也是“1”。所以这导致浏览(cr,uid,uid)被(cr,1,1)取代。由于uid =“1”表示管理员,只有公司记录的id也是“1” 3.当您使用其他用户登录时,uid不会为“1”。因此,在这种情况下,您无法使用uid读取该公司,因为('uid!= 1','company_id = 1')不匹配。在这种情况下,您可能会收到类似“您尝试访问的文档之一”之类的错误已删除“。
    4.所以你做了一件事,首先执行一个搜索操作,它将产生company_ids,然后通过阅读公司重复for循环。
  3. company_pool = self.pool.get("res.company")
    company_ids = company_pool.search(cr, uid, [])
    for company in company_pool.browse(cr, uid, company_ids):
        company.vat