zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    TCP校验和
    Python8 数据库基础
    Python7 TCPIP协议与抓包
    Python6 线程与进程、网络编程、生成器与迭代器、协程、异步IO
    python2 变量与数据类型
    Python10 前端基础与爬虫
    Python11 Scrapy框架基础
    python3 函数、运算符与数据类型的常用方法
    Python9 数据库进阶
    python1 简介
  • 原文地址:https://www.cnblogs.com/wanxiangIT/p/10861929.html
Copyright © 2011-2022 走看看