在odoo 10

时间:2017-06-03 22:41:52

标签: openerp odoo-10

我已经在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的文件,我在其中创建了所有菜单),我将groups字段添加到此菜单中:

<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

当我更新我的模块时,我有一个错误说&#34; csv文件无法被删除&#34;

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

3 个答案:

答案 0 :(得分:1)

群组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依赖项

答案 1 :(得分:0)

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

无法处理

文件pncevaluation \ security \ ir.model.access.csv:

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

以下提示可能有助于解决您的问题。

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

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中的模块sale_team,因此您需要更改相应的行:

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

感谢 sfx

答案 2 :(得分:0)

你在security.xml文件之前给了ir.model.access文件,这就是为什么它会给你错误

您必须更改以下几点:

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

    <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>