我已经在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。
答案 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文件,这就是为什么它会给你错误
您必须更改以下几点:
这是
<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>