最近做一个任务督办模块,涉及到一些权限问题,折磨了几天,终于是解决了。
任务表中关联了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)