【问题标题】:how to make record rule for asset?如何制定资产记录规则?
【发布时间】:2015-09-23 13:16:39
【问题描述】:

我有资产模块。我继承了资产代码,我将分配用户。如果我有两个公司供两个用户使用,如何为公司明智的资产制定记录规则 如果 A 公司分配给 A 用户 和B公司分配给B用户

我有资产继承类和 company_id1 作为公司名称

当A用户登录时,他应该只获得A公司资产或B用户资产相同的东西

class asset_asset(osv.osv):
    _inherit = "asset.asset"
    #_name = "asset_asset"
    _rec_name= "folio_num"
    _columns = {
        'name': fields.char('Asset Name', size=64),
        'company_id1': fields.many2one('res.company', 'Company', required=True),
        'place1': fields.many2one('asset.parentlocation', 'Location'),
        'asset_catg_id' : fields.many2one('asset.catg', 'Asset Catg Selection',select=True, required=True),
            'area_id' : fields.many2one('asset.name', 'Asset Name Selection', domain="[('asset_catg_id', '=', asset_catg_id)]", select=True, required=True),
        'assetmodelid_add' : fields.many2one('agile.portfolio1','Asset Model Code',domain="[('area_id', '=', area_id)]",),
        'folio_num' : fields.char('Folio No',),
        'asse_line':fields.one2many('asset.line','emp_id','Name Plate'),
        'asse_line2':fields.one2many('asset.part','emp_id1','Parts'),
               #'assed_modelid':fields.many2one('agile.portfolio1','Asset Model ID',select=True, required=True),
        'quantity': fields.char('Quantity',size=64),
        'uom': fields.char('Uinit of Measure',size=64),
        'model_no' : fields.char('Model', size=64),

        #'asset_id':fields.many2one('agile.portfolio','Asset ID'),

    }

我需要完整的代码,即 .xml 或带有解释的记录规则

【问题讨论】:

标签: python xml odoo


【解决方案1】:

在xml、csv文件中设置规则的访问权限

我创建了依赖于项目管理的新模块,我想在安全文件夹中添加新的组、用户、规则和访问控制。我成功地添加了组和用户,以及一些扩展的访问控制。

我的问题是:如何为每个规则指定访问权限(读/写/创建/删除)?。

例如:

1.用户可以创建/读/写任务(ACL)

2.用户只能读取/修改分配给他的任务(规则)

3.项目经理可以查看其项目中的所有任务(规则)

例如:

<record model="ir.rule" id="ir_values_my_costume_rule">
    <field name="name">My Rule Name</field>
    <field name="model_id" ref="model_your_model_name"/>
    <field name="domain_force">[('field','operator','value'),('user_id','=',user.id)]</field>
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="True"/>
    <field name="perm_unlink" eval="True"/>
    <field name="perm_create" eval="True"/>
</record>

您必须在模型名称之前传递 model_,如下所示:model_sale_order 或 model_project_task。

在 eval 中,您可以根据需要传递 True 或 False。

也可以从菜单中定义记录规则,而无需创建任何文件:设置->技术->安全->记录规则。

您需要仔细配置三个主要字段才能定义“记录规则”

对象:您要在其上应用记录规则。 (在本例中为“Task”对象)。

:用于过滤数据的设置域。 组:添加要应用此记录规则的组。如果不添加任何内容,则此规则全局应用,通常用于配置多公司记录规则。 我将以OpenERP的“Task”对象为例来说明这种访问规则。

在我的例子中,假设我的需求是这样的:

用户“rch”只能访问以下类型的任务列表...

未分配给任何用户的所有任务的列表。即('user_id','=',False)

分配给用户“rch”的所有任务列表。即('user_id','=',user.id)

他所属的所有项目的所有任务列表。即('project_id.members','in', [user.id])

他担任项目经理的项目的所有任务列表。即('project_id.user_id','=',user.id)

如下配置您的记录规则:

名称:根据用户和项目划分的任务。

对象:任务。

域:['|','|','|',('user_id','=',False),('user_id','=',user.id),('project_id.members' ,'in', [user.id]),('project_id.user_id','=',user.id)].

组:项目/用户。

现在将此组(项目/用户)添加到用户“rch”。

【讨论】:

    【解决方案2】:

    转到->

    • 设置
      • 技术
        • 安全
          • 记录规则 为资产创建新规则。

    取消选中读取、写入、创建和删除的所有访问权限。

    【讨论】:

    • 我无法点击全局复选框
    • 它在一种情况下不工作,但在另一种情况下工作正常
    • 不需要点击全局复选框。当您不能在网格中指定任何组时,会自动选中全局复选框。
    • 它显示的弹出消息应该选择任何一个访问权限
    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多