odoo 权限杂记

最近做一个任务督办模块,涉及到一些权限问题,折磨了几天,终于是解决了。

任务表中关联了hr_employee,分别有默认字段创建人,Many2one的发布人、监督人和Many2many类型的主责人,这些人员分属不同子公司。

首先给任务表添加一个rule 设置domain_force 为1=1,解决了任务表跨公司不可见问题。

<record id="oa_mission_detail_company_rule" model="ir.rule">
    <field name="name">任务详情公司规则</field>
    <field name="model_id" ref="oa_superintendent.model_oa_mission_detail"/>
    <field name="domain_force">[(1,'=',1)]</field>
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="False"/>
    <field name="perm_create" eval="False"/>
    <field name="perm_unlink" eval="False"/>
</record>

其次要求创建任务,接受任务等操作后需要给发布人,督办人等发送消息,使用sudo()方法获取这些人员的信息。

Many2many字段在任务页面不显示,需要重写hr_employee的以下方法:

name_get()---from页面需要调用;

read();

fields_get()----tree页面需要调用

class Employee(models.Model):
    _inherit = "hr.employee"

    @api.multi
    def name_get(self):
        return super(Employee, self.sudo()).name_get()

    @api.multi
    def read(self, fields=None, load='_classic_read'):
        return super(Employee, self.sudo()).read(fields=fields,load=load)

@api.model
def fields_get(self, allfields=None, attributes=None):
    return super(Employee, self.sudo()).fields_get(allfields=allfields,attributes=attributes)

posted on 2019-05-14 14:20  万象IT  阅读(198)  评论(0编辑  收藏  举报

导航