gpt4 book ai didi

python - 如何将我的自定义菜单添加到门户用户菜单列表?

转载 作者:行者123 更新时间:2023-12-01 08:56:43 26 4
gpt4 key购买 nike

我有一个名为门户表单的菜单。我希望具有门户组的用户可以看到该菜单。

到目前为止,我已经创建了用户并为其分配了门户门户组。我还为门户组添加了我的模型的访问权限。正如上一个问题中所建议的,与我的类似,我已经遵循了所有解决方案。然而,门户用户看不到我的自定义菜单。

谁能告诉我它是如何在 Odoo 11 中实现的?

最佳答案

让我们从头开始创建一个名为 my_module 的玩具模块。

首先,我们需要创建一个模型。文件 addons/my_module/models/models.py 包含:



from odoo import api, fields, models, tools, _

class Books(models.Model):
_name = 'my_module.books'

title = fields.Char(string='Title')
author = fields.Char(string='Author')

现在,我们可以创建菜单、操作和 View 。文件 addons/my_module/views/views.xml 包含:



<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

<!-- Top menu item -->
<menuitem name="My top menu" id="my_module.menu_root"/>

<!-- menu categories -->
<menuitem name="My left-side menu" id="my_module.menu_left" parent="my_module.menu_root"/>

<!-- Model Books: views, actions and menus -->

<!-- explicit tree view definition -->
<record model="ir.ui.view" id="my_module.books_view_tree">
<field name="name">My books - List view</field>
<field name="model">my_module.books</field>
<field name="arch" type="xml">
<tree>
<field name="title"/>
<field name="author"/>
</tree>
</field>
</record>

<!-- explicit form view definition -->
<record model="ir.ui.view" id="my_module.books_view_form">
<field name="name">My books - Form view</field>
<field name="model">my_module.books</field>
<field name="arch" type="xml">
<form string="My books">
<sheet>
<group>
<field name="title"/>
<field name="author"/>
</group>
</sheet>
</form>
</field>
</record>

<!-- action opening views for this model -->
<record model="ir.actions.act_window" id="my_module.books_action_window">
<field name="name">My Books - Window action</field>
<field name="res_model">my_module.books</field>
<field name="view_mode">tree,form</field>
</record>

<!-- menu for the above action -->
<menuitem name="Books" id="my_module.menu_books" parent="my_module.menu_left" action="my_module.books_action_window" sequence="6" />

</data>
</openerp>

然后,我们需要一份声明。文件 addons/my_module/__manifest__.py 包含:


{
'name': "my_module",
'summary': "Answer to Stack Overflow Question 52733625",
'description': "Answer to Stack Overflow Question 52733625",
'author': "Adán Cortés Medina",
'website': "http://www.linkedin.com/in/1acme",

# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/9.0/openerp/addons/base/module/module_data.xml
# for the full list
'category': 'Uncategorized',
'version': '0.1',

# any module necessary for this one to work correctly
'depends': ['website'],

# always loaded
'data': [
'views/views.xml',
#'security/ir.model.access.csv',
],
# only loaded in demonstration mode
'demo': [
#'demo/demo.xml',
],
}

此时,您很可能想要创建一个新数据库并加载模块。顶部会有一个名为我的顶部菜单的菜单,然后左侧会有一个标签,上面写着我的左侧菜单,下面会有一个菜单,上面写着Books,当您单击它时,将显示书籍模型的 ListView 。此外,当您单击创建按钮时,您将看到该模型的表单 View 。

一旦经过测试,我们就可以添加安全性。首先,转到 __manifest__.py 文件并通过删除前导 # 取消注释 #'security/ir.model.access.csv', 。然后使用以下内容创建 addons/my_module/security/ir.model.access.csv:


"id","name","model_id/id","group_id/id","perm_read","perm_write","perm_create","perm_unlink"
"access_my_module_books","my_module.books","my_module.model_my_module_books","base.group_portal","True","True","True","True"

为了安全起见,请重新启动 Odoo,然后转到 Apps 菜单并通过先单击其卡然后单击 Upgrade 按钮来重新加载模块.

现在,通过在 # 之前添加 debug 进入 Debug模式(URL 应类似于 http://example.com:8096/web?debug#.. 。)并创建一个用户,同时确保其所属到门户组(必须勾选其他额外权利/门户)。单击保存按钮。查找表单顶部的操作下拉菜单,然后选择更改密码。输入密码,点击保存

然后打开一个新的隐身窗口(以便能够同时打开两个 Odoo 帐户)并使用您刚刚创建的用户登录。图书菜单应该显示在那里。

最后,创建一个不属于 Portal 组的新用户,使用该用户登录并检查“图书”菜单是否不会显示。

您可以从 https://github.com/AdanCortes/stackoverflow/tree/q52733625 下载上述玩具模块

关于python - 如何将我的自定义菜单添加到门户用户菜单列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52733625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com