宜兴通达竭诚为您服务。

ODOO12图书项目创建新应用

2020-10-12 00:10:00     作者: Administrator     来源:互联网,版权归作者所有     浏览次数: 38     文字大小:【】【】【

你没有登录,文章中的图片无法正常显示,请点击登录

一些 Odoo 模块创建新应用,而另一些则对已有应用添加功能或作出修改。虽然两者的技术组件基本相同,但应用会被预期包含一些特征性元素。我们创建的是一个图书应用,所以应包含这些元素,它们是:

  • 图标:用于在应用列表中展示

  • 顶级菜单项:其下放置所有的应用菜单项

  • 应用安全组:通过权限访问仅对指定用户开放

添加图标(icon),仅需在模块目录下static/description/子文件夹中放置icon.png文件,前面已经介绍过了。下面我们来添加应用顶级菜单。

添加应用顶级菜单项

我们创建的是一个新应用,因此应包含主菜单项,在社区版本中,显示在左侧下拉菜单中,而在企业版中,则作为附加图标显示在应用切换器主界面中。

菜单项是使用 XML 文件中添加的视图组件,通过创建views/library_menu.xml来定义菜单项:

<?xml version="1.0"?>

<odoo>

<!-- Library App Menu -->

<menuitem id="menu_library"

name="Library" />

</odoo>

用户界面中的菜单项和操作均存储于数据表中,上面的代码是一个 Odoo 数据文件,描述了要载入 Odoo 数据库的记录。其中的元素是向ir.ui.menu模型写入记录的指示。 id 属性也称作XML ID,用于唯一标识每个数据元素,以供其它元素引用。例如在添加图书子菜单时,就需要引用顶级菜单的XML ID,即menu_library。XML ID是一个重要话题,将在后面探讨。

此处添加的菜单项非常简单,仅用到了 name 属性。其它常用的属性这里没有使用,没有设置父菜单,因为这是一个顶级菜单。也没有设置 action,因菜单项本身并不做任何事,仅仅用于放置后面要创建的子菜单项。模块还不知道 XML 数据文件的存在,我们需要在__manifest__.py中使用 data 属性来添加安装或更新时需要加载的模块列表以进行声明。在manifest 文件的字典中加入:

'data': [

'views/library_menu.xml',

],

要向Odoo数据库中加载这些菜单设置,需要升级模块。此时还不会有什么显式的效果,因菜单项还不包含可操作子菜单,所以不会显示。在添加好子菜单及合适的访问权限时即可显示。


添加权限组

普通用户在使用功能前需获得相应的权限。Odoo 中使用安全组来实现,权限授予组,组中分配用户。Odoo 应用通常有两个组:针对普通用户的用户组,包含额外应用配置权限的管理员组。

下面我们就来添加这两个安全组。权限安全相关的文件通常放在模块下/security子目录中,这里我们创建security/library_security.xml 文件来进行权限定义。安全组使用分类来更好地组织关联应用。所以第一步我们在ir.module.category模型中创建针对图书应用的分类:

<?xml version="1.0"?>

<odoo>

<record id="module_library_category" model="ir.module.category">

<field name="name">Library</field>

</record>

</odoo>
下一步,我们要添加两个安全组,首先添加用户组。在以上结束标签前添加如下 XML 代码块:

<!-- Library User Group -->

<record id="library_group_user" model="res.groups">

<field name="name">User</field>

<field name="category_id"

ref="module_library_category"/>

<field name="implied_ids"

eval="[(4, ref('base.group_user'))]"/>

</record>

记录在res.groups模型中创建,添加了三个字段:

  • name:组名

  • category_id:关联应用,这是一个关联字段,因此使用了 ref 属性来通过 XML ID 连接已创建的分类

  • implied_ids:这是一个one-to-many关联字段,包含一系列组来对组内用户生效。这里使用了一个特殊语法。我们使用了编号4来连接基本内部用户组base.group_user。

然后我们创建管理员组,授予用户组的所有权限以及为应用管理员保留的其它权限:

<!-- Library Manager Group -->

<record id="library_group_manager" model="res.groups">

<field name="name">Manager</field>

<field name="category_id"

ref="module_library_category"/>

<field name="implied_ids"

eval="[(4, ref('library_group_user'))]"/>

<field name="users"

eval="[(4, ref('base.user_root')),

(4, ref('base.user_admin'))]"/>

</record>

像用户组一样,这里也有name, category_id和implied_ids ,implied_ids关联了图书用户组,以继承其权限。还添加了一个 users 字段,让管理员和内部 root 用户自动成为应用管理员。

同样需要在声明文件中添加该 XML 文件:

'data': [

'security/library_security.xml',

'views/library_menu.xml',

],

注意library_security.xml 加在library_menu.xml文件之前,数据文件的加载顺序非常重要,因为我们只能引用已经定义过的标识符。菜单项经常引用到安全组,所以建议将安全组定义文件放到菜单和视图文件之前。

更新应用后,就会在用户组里发现我们新建的两个权限组:


视频演示:
http://www.tderp.com/download/details/odoo12-854

http://ctdrive.tderp.com/file/13502532-466325574

相关文章 评论

服务原则及地区范围

宜兴通达团队,在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我团队愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达团队提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: