【问题标题】:Creating security groups for a custom module in odoo 10在 odoo 10 中为自定义模块创建安全组
【发布时间】:2017-06-05 18:20:24
【问题描述】:

我在 odoo 10 上创建了一个自定义模块。现在我想与用户创建安全组,其中每个组都有我的自定义模块的特定菜单。我已经问过这个问题,我按照我得到的答案,但我没有得到结果(我肯定在某些时候搞砸了,但我看不到在哪里,这是我第一次使用 odoo)所以我问又是这个问题。这是我所做的:

我在安全文件夹中创建了一个文件 security.xml,其中包含以下内容

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
   <!-- Creating a Group Category -->        
   <record id="evaluation_subj" model="ir.module.category">
       <field name="name">evaluation subjective</field>
       <field name="sequence">1</field>
   </record>
   <!-- Adding a Group to the Group Category -->
   <record id="group_eval_subj" model="res.groups">
       <field name="name">Groupe Evaluation Subjective</field>
       <field name="evaluation_subj" ref="evaluation subjective"/>
       <!-- Adding Rights of existing Groups -->
       <field name="implied_ids"
              eval="[(4, ref('base.group_system')), 
     (4,ref('base.group_sale_manager'))]"/>
   </record>
  </data>
 </odoo> 

然后在文件 pnc_menus.xml 中(我有一个名为 pnc_menus.xml 的文件,我在其中创建了所有菜单)我将组字段添加到此菜单:

<menuitem name="Parties Prenantes" id="pnc_evaluation_stakeholders"
         action="pncevaluation_partieprenante" parent="pnc_documents" sequence="40" groups="base.group_system"/>

然后在我的安全文件夹的 csv 文件中添加了这个:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
eval_group,groupe_evaluation,pnc_evaluation_stakeholders,group_eval_subj,1,1,1,1

当我更新我的模块时,出现“无法处理 csv 文件”的错误消息

In the log file I have this:
`Exception: Module loading pncevaluation failed: file pncevaluation\security/ir.model.access.csv could not be processed:
 Aucun enregistrement trouv\xe9 pour id externe 'group_eval_subj' dans le champ 'Group'
ERREUR:  une instruction insert ou update sur la table \xab ir_model_access \xbb viole la contrainte de cl\xe9
\xe9trang\xe8re \xab ir_model_access_model_id_fkey \xbb
DETAIL:  La cl\xe9 (model_id)=(559) n'est pas pr\xe9sente dans la table \xab ir_model \xbb.
 File "D:\Odoo 10.0\server\odoo\tools\convert.py", line 898, in convert_csv_import
    raise Exception(_('Module loading %s failed: file %s could not be processed:\n %s') % (module, fname, warning_msg))
Exception: Module loading pncevaluation failed: file pncevaluation\security/ir.model.access.csv could not be processed:
 Aucun enregistrement trouv\xe9 pour id externe 'group_eval_subj' dans le champ 'Group'
ERREUR:  une instruction insert ou update sur la table \xab ir_model_access \xbb viole la contrainte de cl\xe9
\xe9trang\xe8re \xab ir_model_access_model_id_fkey \xbb
DETAIL:  La cl\xe9 (model_id)=(559) n'est pas pr\xe9sente dans la table \xab ir_model \xbb.

link 我之前的问题。

【问题讨论】:

    标签: openerp odoo-10


    【解决方案1】:

    Group group_sale_manager 在 Odoo 10 中从 base 移动到 sales_team。 所以像下面这样改变你的代码

    <field name="implied_ids" eval="[(4, ref('base.group_system')), (4,ref('sales_team.group_sale_manager'))]"/>
    

    别忘了在你的模块中添加 sales_team 依赖

    【讨论】:

    • 谢谢你现在我没有错误但是我在组列表中找不到我的组 (config--groups-- serch--groupe_evaluation) 我没有发现我需要将用户添加到我的组
    【解决方案2】:

    你在 security.xml 文件之前给出了 ir.model.access 文件,这就是它给你错误的原因

    你必须改变以下几点:

    1. ma​​nifest.py 文件中,在 ir.model.access.csv 文件之前添加 security.xml 文件。
    2. 在你给的组中
    3. 在implicit_ids 中,给出了base.group_sale_manager,但在Odoo v10 中,该组在sales_team 模块中定义,因此该组的外部ID 为“sales_team.group_sale_manager”。

    这里是

    <record id="evaluation_subj" model="ir.module.category">
           <field name="name">evaluation subjective</field>
           <field name="sequence">1</field>
       </record>
       <!-- Adding a Group to the Group Category -->
       <record id="group_eval_subj" model="res.groups">
           <field name="name">Groupe Evaluation Subjective</field>
           <field name="evaluation_subj" ref="evaluation_subj"/>
           <!-- Adding Rights of existing Groups -->
           <field name="implied_ids"
                  eval="[(4, ref('base.group_system')), 
         (4,ref('sales_team.group_sale_manager'))]"/>
       </record>
    

    【讨论】:

    • 谢谢你现在我没有错误但是我在组列表中找不到我的组 (config--groups-- serch--groupe_evaluation) 我没有发现我需要将用户添加到我的组
    【解决方案3】:

    日志很清楚并提到了问题,您的 csv 文件有问题。

    文件 pncevaluation\security\ir.model.access.csv 无法处理:

    No records found for external id 'group_eval_subj' in the 'Group' field
    

    这里有一些提示可以帮助您解决问题。

    在您的 __openerp__.py 文件中,确保 security.xml 在包含记录引用的 csv 文件之前加载。

    仔细检查 CSV 文件中的 ID,它们必须与您的 xml 文件中定义的完全相同。

    检查您的 CSV 是否有任何错误。您可以借助电子表格查看器查看所有列是否正确对齐。

    希望这能解决您的问题。

    PS:

    这是更新后的代码。使用组记录定义中的修复。更新你的 security.xml

    <?xml version="1.0" encoding="utf-8"?>
    <odoo>
    <data noupdate="0">
       <!-- Creating a Group Category -->        
       <record id="evaluation_subj" model="ir.module.category">
           <field name="name">evaluation subjective</field>
           <field name="sequence">1</field>
       </record>
    
       <!-- Adding a Group to the Group Category -->
       <record id="group_eval_subj" model="res.groups">
           <field name="name">Groupe Evaluation Subjective</field>
           <field name="category_id" ref="evaluation_subj"/>
           <!-- Adding Rights of existing Groups -->
           <field name="implied_ids" eval="[(4, ref('base.group_system')), (4,ref('base.group_sale_manager'))]"/>
       </record>
    
      </data>
     </odoo> 
    

    根据sfx的回答, 集团销售经理被移动到odoo 10中的模块sales_team,因此您需要将相应的行更改为:

    <field name="implied_ids" eval="[(4, ref('base.group_system')), (4,ref('sales_team.group_sale_manager'))]"/>
    

    感谢sfx

    【讨论】:

    • 谢谢你在我的 manifest.py 文件中我在 csv 之前声明了安全性。现在我有一个新错误:ParseError: "External ID not found in the system: pncevaluation.evaluation subjective" while parsing file:///D:/Odoo%2010.0/server/odoo/addons/pncevaluation/security/security.xml:10,record id="groupeval_subj" model="res.groups"&gt; &lt;field name="name"&gt;Groupe Evaluation Subjective&lt;/field&gt; &lt;field name="evaluation_subj" ref="evaluation subjective"/&gt;
    • 我试过你的新代码,现在日志这样写:ParseError: "&lt;type 'exceptions.ValueError'&gt;: "External ID not found in the system: base.group_sale_manager" while evaluating "[(4, ref('base.group_system')), (4,ref('base.group_sale_manager'))]"" while parsing file:///D:/Odoo%2010.0/server/odoo/addons/pncevaluation/security/security.xml:11, near
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多