威尼斯人线上娱乐

【威尼斯人线上娱乐】权力设置,odoo权限机制

13 4月 , 2019  

<record id="group_lm_apply" model="res.groups">      <--id是权限组id,方便别的地方调用。model指向res.groups,在数据库中有res_groups表,包含了相关信息-->
    <field name="name">业务部门</field>
    <field name="category_id" ref="legalmanagement.module_category_legal_sample"/>    <--category_id是指定此组属于哪个应用程序(模块)-->
    <field name="implied_ids" eval="[(4, ref('legalmanagement.group_lm_sample'))]"/>    <--见下-->
    <field name="comment">lm apply</field>
</record>

odoo权限小谈,odoo权限

<record id="group_lm_apply" model="res.groups">      <--id是权限组id,方便别的地方调用。model指向res.groups,在数据库中有res_groups表,包含了相关信息-->
    <field name="name">业务部门</field>
    <field name="category_id" ref="legalmanagement.module_category_legal_sample"/>    <--category_id是指定此组属于哪个应用程序(模块)-->
    <field name="implied_ids" eval="[(4, ref('legalmanagement.group_lm_sample'))]"/>    <--见下-->
    <field name="comment">lm apply</field>
</record>

eval 解析
(4,ID)添加主从链接关系到id=ID的对象。

(3,ID)删去和id=ID的靶子主从链接关系,可是不删除那么些目的

(2,ID)
去除和id=ID的对象主从链接关系,并且删除那个指标(调用unlink方法)

(5) 去除全数的链接关系,也正是循环全体的从数据且调用(三,ID)

(6,0,[IDs])
用IDs里面包车型地铁笔录替换原来链接的笔录,即先实施(5)再循环IDs执行(4,ID)

 

record id
=”group_lm_apply” model =”res.groups”
–id是权力组id,方便其余地点调用。model指向res.groups,在数据库中有res_groups表,…

*权力管理的八个层次

*权力管理的七个层次
    #
菜单级别:不属于钦赐菜单所包罗组的用户看不到该菜单,不客全,只是隐藏
                 菜单,若知道菜单ID,仍旧能够通过点名UHighlanderL访问
    #
对象级别:对有些对角是不是有’创制,读取,修改,删除’的权位,能够差不多明了为
                表对象
    #
记录级别:对指标表中的数据的拜会权限,比如访问“客户”对象,业务员只好对本身创制
               
的客户有访问权限,而经营能够访问其管辖的业务员全体的“客户”对象
【威尼斯人线上娱乐】权力设置,odoo权限机制。    #
字段级别:二个目的或表上的有个别字段的造访权限,比如产品的老本字段唯有经营有读权限
       
‘name’:fields.char(‘Name’,size=128,required=True,select=True,write=[‘base.group_admin’]
               read=[‘base.group_admin’])
        定义name字段只好顶尖用户组可读写

eval 解析
(4,ID)添加主从链接关系到id=ID的对象。

# 菜单级别:不属于钦点菜单所含有组的用户看不到该菜单,不客全,只是隐藏

* 建立权限组
      那是大家常说的用户组,会常见位于“模块名_security.xml”那些文件中
      例如:
      <record id=”base.group_hr_manager” model=”res.groups”>
        <field name=”name”>Manager</field>
        <field name=”comment”>the user will have an access to the
human resources configuration as well as statistic
reports.</field>
        <field name=”category_id”
ref=”base.module_category_human_resources”/>
        <field name=”implied_ids” eval=”[(4,
ref(‘base.group_hr_user’))]”/>
        <field name=”users” eval=”[(4,
ref(‘base.user_root’))]”/>
     </record>
      @name:用户组名,那几个或以翻译的
      @comment:用户组的注明
      @category_id 用户组所属的模块名
      @implied_ids 基于哪个用户组,那些层级关系 <田野(field)name=”implied_ids” eval=”[(4,
ref(‘base.group_user’))]”/>是最基础的
       用户名,最初是基于那个,后边一层一层递增,像上面base.group_hr_user 定义时正是依据最基础
      @users 预设用户属于那个用户组
     

(3,ID)除去和id=ID的指标主从链接关系,可是不删除这么些目的

菜单,若知道菜单ID,还是能够通过点名UTucsonL访问

* 权限组
    权限管理中央是权限组,各样权限组,能够安装权限组的 Menus,Access
Right, Record Rule
    # Menus:
       
定义该权限组能够访问哪些菜单,若该权限组能够访问某父菜单,父菜单对应的子菜单会展现出来
        若不想展现其子菜单,能够把其子菜单加入 “Useablity/No One”
权限组。
    # Access Right:
        定义该权限组可以访问哪些对象,以及拥有
增、查、改、删的哪些权限    (create,read,write,unlink)
    # Record Rule:
        定义该权限组能够访问对象中的哪些记录,以及拥有
增、查、改、删的哪些权限    ,Access Right是
        对目的中的全体记录赋权限,Record Rule
则通过定义domain过滤钦赐有些记录赋权限
       
[‘&’,(‘department’,’=’,user.context_department_id.id),(‘state’,’=’,’pr_draft’)]
        申购单的机关等于当前用户的机构,且申购单的图景是草稿状态
        
* 基于组的访问控制
   # 视图中
      运用group_id
        <record id=”view_order_form_editable_list”
model=”ir.ui.view”>
            <field
name=”name”>sale.order.form.editable.list</field>
            <field name=”model”>sale.order</field>
            <field name=”inherit_id” ref=”sale.view_order_form”
/>
            <field name=”group_id”
eval=”[(6,0,[ref(‘product.group.uos’),
                 ref(‘product.group_stock_packaging’),
                 ref(‘sale.group_mrp_properties’)])]” />
            <field name=”arch” type=”xml”>
                <xpath expr=”//field[@name=’order_line]/tree”
position=”before”
                    <attribute name=”editable” />
                </xpath>    
            </field>
        </record>
        eval:把eval的值通过作为python运算重回该属性
        ref:视图的点子,依据 module_name.xml_id 重回数据库id
        [(6,0,[xx,yy])]
          (0,_ ,{’田野先生’: value}) 那将创制1个新的记录并连接它
          (一,id,{’田野先生’: value}): 那是翻新二个一度连续了的笔录的值
          (2,id,_) 那是去除或撤废连接某些已经接二连三了的笔录
          (3,id,_) 那是撤废连接但不删除2个已经三番五次了的记录
          (4,id,_) 连接二个业已存在的笔录
          (5,_,_) 撤废连接但不删除全体曾经接二连三了的记录
          (6,_,[ids]) 用给出的列表替换掉已经接二连三了的笔录
          那里的下划线1般是0或False
     运用groups
       <button name=”invoice_pay_customer” type=”object”
string=”Register Payment”
                        attrs=”{‘invisible’: [‘|’,
(‘state’,’!=’,’open’), (‘sent’,’=’,True)]}”
groups=”base.group_user”/>
       <field name=”invoice_line_ids”
groups=”account.group_account_invoice”/>
       <menuitem name=”China Account” id=”menu_china_account”
parent=”account.menu_finance” sequence=”4″
groups=”account.group_account_user”/>
   #在模型中
     package_id = fields.Many2one(
        comodel_name=’stock.quant.package’, string=’Package’,
        related=’quant.package_id’, readonly=True,
        groups=”stock.group_tracking_lot”)
   要有四个用户组时,用户组之间用逗号隔开分离

(2,ID)
去除和id=ID的指标主从链接关系,并且删除那一个目的(调用unlink方法)

#
对象级别:对有些对角是不是有’创设,读取,修改,删除’的权柄,能够省略理解为

   #小结  
    唯有在视图中有总体标签时,会用group_id,其它都用groups

(5) 去除全部的链接关系,也便是循环全部的从数据且调用(三,ID)

表对象

*做客权限管理:
  对于其内的数额访问权限管理有两种机制: 
  第1种是模型访问权限管理 (accessrule);
  第二种是记录规则管理 (record rule)。
  record rule 是对accessrule的细化
,带条件,比如记录是什么样状态的能够访问
  如若不为模块设置规则,暗中认可唯有Administator才能访问这些模型的多寡
  record rule 对 Administator 用户是对事情未有什么帮助的,而access rule照旧有效
   
  # access rule
  权限对象模型是 ir.model.access.csv
   一般是置身security 文件夹下的 ir.model.access.csv 文件来治本的
   文件表头如下:
  
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
   
   来一个例子:
  
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
  
access_payment_notice_account_user,payment.notice.account.user,model_payment_notice,account.group_account_user,1,1,1,1
  
access_payment_notice_sale_user,payment.notice.sale.user,model_payment_notice,base.group_sale_salesman,1,1,0,0
    
   分析那几个是对准 payment.notice 那一个模型做访问权限设置
   能够看一下对应模型定义的代码:
   class PaymentNotice(models.Model):
    _name = “payment.notice”

(6,0,[IDs])
用IDs里面包车型地铁笔录替换原来链接的记录,即先进行(5)再循环IDs执行(4,ID)

#
记录级别:对指标表中的数据的造访权限,比如访问“客户”对象,业务员只好对本身成立

   
       id:权限的ID不可重复 壹般取名称为access_模型名_特定用户组名(用下划线连起来)
       name 描述 一般命名沿用模型名用“.”连接加 用户组名
       model_id:id:对象,命名是model_模型名(用下划线连起来)
       group_id:id  组名称 (模块.用户组名)
       上边包车型客车,0 表示无权力, 1 表示有权力
       perm_read  只读
       perm_write 修改
       perm_create 创建
       perm_unlink 删除
       
  # record rule     
     1般是坐落security 文件夹下的 模块名_record_rules.xml
文件来治本的 
     对于模型权限的补充
    <?xml version=”1.0” encoding=”utf-8”?>
    <openerp>
        <data noupdate=”1”>
            <record model=”ir.rule”
id=”payment_notice_personal_rule”>
                <field name=”name”>Personal Payment
Notice</field>
                <field name=”model_id”
ref=”model_payment_notice”/>
                <field
name=”domain_force”>[‘|’,(‘claimed_user_id’,’=’,user.id),(‘claimed_user_id’,’=’,False)]</field>
                <field name=”groups” eval=”[(4,
ref(‘base.group_sale_salesman’))]”/>
            </record>
            
            <record model=”ir.rule”
id=”payment_notice_see_all”>
                <field name=”name”>All Payment
Notice</field>
                <field name=”model_id”
ref=”model_payment_notice”/>
                <field
name=”domain_force”>[(1,’=’,1)]</field>
                <field name=”groups” eval=”[(4,
ref(‘account.group_account_user’))]”/>
                <field name=”perm_read” eval=”1″ />
                <field name=”perm_write” eval=”1″ />
                <field name=”perm_create” eval=”1″ />
                <field name=”perm_unlink” eval=”1″ />
            </record>
        </data>
    </openerp>   

 

的客户有访问权限,而经营可以访问其管辖的业务员全体的“客户”对象

    record rule    记录是 ir.rule 模型, 存在public.ir_rule 表格中
    model_id 成效于哪个模型 值为 model_模型名
    domain_force 对该模型中有着记录进行某种过滤操作
    常用的 [‘|’,(‘user_id’,’=’,user.id),(‘user_id’,’=’,False)]
表示是温馨的单 
    user_id是记录的字段,这些看其实情状改变, user.id
代表当前登录用户的id
    [(1,’=’,1)] 表示拥有的单
    noupdate 值为一 表示升级模块不会更新本数据
    base.group_user 是人力财富 / 雇员
    perm_read 那些后边,是对 前边模型权限组织设立定的覆盖
    
    
* 来3个完好无缺的例子解释:

#
字段级别:1个对象或表上的壹些字段的造访权限,比如产品的基金字段唯有经营有读权限

   # 建立组
    <record id=”group_department_project_admin”
model=”res.groups”>
    <field name=”name”>A</field>
    <fieldname=”category_id” ref=”B”/>
    <field name=”users” eval=”[(4, ref(‘base.user_root’))]”/>
//把admin用户进入该组中
    </record>

‘name’:fields.char(‘Name’,size=128,required=True,select=True,write=[‘base.group_admin’]

    @ name 组名称
    @ category_id 属于哪个应用程序,恐怕哪些模块,为了方便管理
    @ users 组里面的用户
    那样B应用程序就成立了三个名字为A的组。并且开首化了A组的三个用户admin
    
   # 组控制菜单突显
    A

read=[‘base.group_admin’])

    <record model=”ir.ui.menu” id=” memu_id1″>
        <field name=”name” >menu1</field>
        <field name=”groups_id”
eval=”[(6,0,[ref(‘A’),ref(‘B’)]),]”/>           
        <field name=”sequence”>1</field>
    </record>

概念name字段只好一流用户组可读写

    @ name 菜单名称
    @ groups_id 哪些组能够访问该菜单
    @ sequence 该菜单的序号
    那样A组与B组的分子都得以访问menu一菜谱,menu一菜单的来得顺序为一 
    注:eval 前面解释,八个组访问用“,”隔开分离    
    
    <menuitem id=”menu_id2 ” name=”menu2″ parent=”menu_id1″
sequence=”1″ groups=”A,B “/>
    @ name 菜单名称
    @ parent 父类菜单 如若未有可以不写parent
    @ groups哪些组可以访问该菜单
    那样menu1的子菜单menu二方可被A组合B组的分子访问
    
   # 权限规则
    <record model=”ir.rule” id=”rule1″>
        <field name=”name”>rule1</field>
        <field name=”model_id” ref=”model_model1″/>
        <field name=”global” eval=”True”/>
        <field name=”domain_force”>[1,’=’,1]</field>
        <field name=”groups” eval=”[(4,ref(‘A’))]”/>
    </record>

* 建立权限组

    @ name 规则名称
    @ model_id 重视的模块
    @ global 是不是是全局
    @ domain_force 过滤条件
    @ groups 属于哪个组

那是大家常说的用户组,会常见位于“模块名_security.xml”那些文件中

    那样A组的分子就可以取到model_model一的具备数据
    
   # ir.model.access.csv
    @id 随便取
    @name 随便取
    @model_id:id 那么些便是你所定义的对象了
    @group_id:哪个组
    @perm_read”,”perm_write”,”perm_create”,”perm_unlink”
增加和删除改查权限了。1象征有权力
    
    
   # Eval

例如:

    many2many
    (0,0,{values}) 依据values里面包车型地铁新闻新建二个笔录。
    (1,ID,{values})更新id=ID的笔录(写入values里面包车型大巴数码)
    (二,ID)
删除id=ID的多寡(调用unlink方法,删除数据以及任何中央数据链接关系)
    (三,ID) 切断主从数额的链接关系可是不删除这几个数目
    (4,ID) 为id=ID的数量添加主从链接关系。
    (五) 删除全数的从数量的链接关系就是向全数的从数额调用(3,ID)
    (6,0,[IDs])
用IDs里面包车型地铁记录替换原来的笔录(正是先实施(伍)再履行循环IDs执行(四,ID))

Manager

    例子[(6, 0, [8, 5, 6, 4])] 设置 many2many to ids [8, 5, 6,
4]
    one2many
    (0, 0,{ values })依照values里面的音信新建多少个记下。
    (1,ID,{values}) 更新id=ID的笔录(对id=ID的实施write
写入values里面包车型客车数据)
    (2,ID)
删除id=ID的数码(调用unlink方法,删除数据以及一切宗旨数据链接关系)
    例子:
   
[(0,0,{‘field_name’:field_value_record1,…}),(0,0,{‘field_name’:field_value_record})]
   
many2one的字段比较简单,直接填入已经存在的数目标id也许填入False删除原来的记录。
    
   # 隐藏的常用技巧

the user will have an access to the human resources configuration as
well as statistic reports.

    * 直接隐藏
     <group name=”owner” position=”attributes”>
            <attribute name=”invisible”>True</attribute>
     </group>

@name:用户组名,那一个或以翻译的

    * 满意某个原则的藏匿

@comment:用户组的声明

    <xpath expr=”//field[@name=’parent_id’]”
position=’attributes’>
     <attribute name=”attrs”>{‘invisible’: [(‘passenger’,’=’,
True)]}</attribute>
    </xpath>

@category_id 用户组所属的模块名

    <group col=”四” string=’旅客音讯’ attrs=”{‘invisible’:
[(‘supplier’,’=’, True)]}”></group>

@implied_ids 基于哪个用户组,那些层级关系 是最基础的

     * 通过组来掩藏
     <xpath expr=”//field[@name=’type’]”
position=”attributes”>
        <attribute
name=”groups”>base.group_no_one</attribute>
     </xpath>

用户名,最初是依据那些,前面一层一层递增,像下边 base.group_hr_user
定义时正是基于最基础

    * 菜单的隐蔽
      <record model=”ir.ui.menu”
id=”crm.menu_crm_opportunities”>
            <field eval=”[(6,0, [ref(‘base.group_no_one’),])]”
name=”groups_id”/>
      </record>
      
* 代码分析中的运用
    #字段展现权限
    <field name=”company_id” groups=”base.group_multi_company”
widget=”selection”/>
    
    #在model中判断
    self.pool.get(‘res.users’).has_group(cr, uid,
‘sale.group_discount_per_so_line’)   

@users 预设用户属于那个用户组

 

* 权限组

 

权限管理骨干是权限组,各个权限组,能够安装权限组的 Menus,Access Right,
Record Rule

内容转载  

# Menus:

概念该权限组能够访问哪些菜单,若该权限组能够访问某父菜单,父菜单对应的子菜单会展现出来

若不想体现其子菜单,能够把其子菜单插足 “Useablity/No One” 权限组。

# Access Right:

概念该权限组能够访问哪些对象,以及具有 增、查、改、删的哪些权限   
(create,read,write,unlink)

# Record Rule:

概念该权限组能够访问对象中的哪些记录,以及具有
增、查、改、删的哪些权限    ,Access Right是

对指标中的全体记录赋权限,Record Rule
则通过定义domain过滤钦命某个记录赋权限

[‘&’,(‘department’,’=’,user.context_department_id.id),(‘state’,’=’,’pr_draft’)]

申购单的机关等于当前用户的机关,且申购单的情形是草稿状态

* 基于组的访问控制

# 视图中

运用group_id

sale.order.form.editable.list

sale.order

ref(‘product.group_stock_packaging’),

ref(‘sale.group_mrp_properties’)])]” />

eval:把eval的值通过作为python运算再次回到该属性

ref:视图的法子,依照 module_name.xml_id 重临数据库id

[(6,0,[xx,yy])]

(0,_ ,{’田野(field)’: value}) 那将开创1个新的记录并一而再它

(壹,id,{’田野先生’: value}): 那是立异1个一度接二连三了的记录的值

(2,id,_) 那是删除或打消连接有个别已经一连了的记录

(3,id,_) 那是收回连接但不删除一个业已接二连三了的记录

(4,id,_) 连接3个壹度存在的笔录

(5,_,_) 废除连接但不删除全部曾经接二连三了的笔录

(6,_,[ids]) 用给出的列表替换掉已经接二连三了的笔录

那里的下划线一般是0或False

运用groups

attrs=”{‘invisible’: [‘|’, (‘state’,’!=’,’open’), (‘sent’,’=’,True)]}”
groups=”base.group_user”/>

#在模型中

package_id = fields.Many2one(

comodel_name=’stock.quant.package’, string=’Package’,

related=’quant.package_id’, readonly=True,

groups=”stock.group_tracking_lot”)

要有多少个用户组时,用户组之间用逗号隔开分离

#小结

唯有在视图中有全体标签时,会用group_id,其它都用groups

*访问权限管理:

对于其内的数码访问权限管理有二种机制:

先是种是模型访问权限管理 (accessrule);

第两种是记录规则管理 (record rule)。

record rule 是对accessrule的细化 ,带条件,比如记录是何等状态的能够访问

纵然不为模块设置规则,暗许唯有Administator才能访问这么些模型的数码

record rule 对 Administator 用户是没用的,而access rule照旧实惠

# access rule

权限对象模型是 ir.model.access.csv

貌似是身处security 文件夹下的 ir.model.access.csv 文件来保管的

文件表头如下:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

来一个事例:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

access_payment_notice_account_user,payment.notice.account.user,model_payment_notice,account.group_account_user,1,1,1,1

access_payment_notice_sale_user,payment.notice.sale.user,model_payment_notice,base.group_sale_salesman,1,1,0,0

解析那些是对准 payment.notice 那一个模型做访问权限设置

能够看一下一拍即合模型定义的代码:

class PaymentNotice(models.Model):

_name = “payment.notice”

id:权限的ID不可重复 1般取名为access_模型名_特定用户组名(用下划线连起来)

name 描述 壹般命名沿用模型名用“.”连接加 用户组名

model_id:id:对象,命名是model_模型名(用下划线连起来)

group_id:id  组名称 (模块.用户组名)

上边包车型大巴,0 代表无权力, 壹 表示有权力

perm_威尼斯人线上娱乐,read  只读

perm_write 修改

perm_create 创建

perm_unlink 删除

# record rule

貌似是放在security 文件夹下的 模块名_record_rules.xml 文件来保管的

对于模型权限的补充

Personal Payment Notice

[‘|’,(‘claimed_user_id’,’=’,user.id),(‘claimed_user_id’,’=’,False)]

All Payment Notice

[(1,’=’,1)]

record rule    记录是 ir.rule 模型, 存在public.ir_rule 表格中

model_id 功用于哪个模型 值为 model_模型名

domain_force 对该模型中负有记录举行某种过滤操作

常用的 [‘|’,(‘user_id’,’=’,user.id),(‘user_id’,’=’,False)]
表示是和谐的单

user_id是记录的字段,那个看其真实情况形改变, user.id 代表当前报到用户的id

[(1,’=’,1)] 表示拥有的单

noupdate 值为一 意味着升级模块不会更新本数据

base.group_user 是人力能源 / 雇员

perm_read 那个后边,是对 前边模型权限组织设立定的掩盖

* 来1个总体的事例解释:

# 建立组

A

//把admin用户进入该组中

@ name 组名称

@ category_id 属于哪个应用程序,也许哪些模块,为了方便管理

@ users 组里面包车型大巴用户

这样B应用程序就创设了贰个名为A的组。并且初步化了A组的二个用户admin

# 组控制菜单展现

A

menu1

1

@ name 菜单名称

@ groups_id 哪些组能够访问该菜单

@ sequence 该菜单的序号

那样A组与B组的分子都得以访问menu壹菜单,menu1菜单的来得顺序为一

注:eval 前边解释,八个组访问用“,”隔离

@ name 菜单名称

@ parent 父类菜单 假如未有得以不写parent

@ groups哪些组能够访问该菜单

这么menu一的子菜单menu二方可被A组合B组的积极分子访问

# 权限规则

rule1

[1,’=’,1]

@ name 规则名称

@ model_id 注重的模块

@ global 是还是不是是全局

@ domain_force 过滤条件

@ groups 属于哪个组

如此A组的积极分子就能够取到model_model一的装有数据

# ir.model.access.csv

@id 随便取

@name 随便取

@model_id:id 那个正是您所定义的目标了

@group_id:哪个组

@perm_read”,”perm_write”,”perm_create”,”perm_unlink”
增加和删除改查权限了。1代表有权力

# Eval

many2many

(0,0,{values}) 根据values里面的音讯新建1个记录。

(一,ID,{values})更新id=ID的记录(写入values里面包车型大巴多少)

(2,ID)
删除id=ID的数目(调用unlink方法,删除数据以及壹切大旨数据链接关系)

(三,ID) 切断主从数额的链接关系不过不删除这几个数据

(4,ID) 为id=ID的数额添加主从链接关系。

(伍) 删除全数的从数量的链接关系便是向具有的从数额调用(三,ID)

(6,0,[IDs])
用IDs里面包车型大巴笔录替换原来的记录(正是先举行(伍)再实行循环IDs执行(四,ID))

例子[(6, 0, [8, 5, 6, 4])] 设置 many2many to ids [8, 5, 6, 4]

one2many

(0, 0,{ values })依照values里面包车型客车新闻新建1个记下。

(壹,ID,{values}) 更新id=ID的笔录(对id=ID的推行write
写入values里面包车型大巴数码)

(2,ID)
删除id=ID的数量(调用unlink方法,删除数据以及壹切中央数据链接关系)

例子:

[(0,0,{‘field_name’:field_value_record1,…}),(0,0,{‘field_name’:field_value_record})]

many2one的字段相比较简单,直接填入已经存在的数目的id也许填入False删除原来的笔录。

# 隐藏的常用技巧

* 直接隐藏

True

* 知足有个别规则的躲藏

{‘invisible’: [(‘passenger’,’=’, True)]}

* 通过组来掩藏

base.group_no_one

* 菜单的藏身

* 代码分析中的运用

#字段展现权限

#在model中判断

self.pool.get(‘res.users’).has_group(cr, uid,
‘sale.group_discount_per_so_line’)


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图