odoo二次开发精选

odoo二开(2)windows下如何初始化一个新的模块,以及正

2024-05-26  本文已影响0人  弗兰克万岁
  1. 请先参考我的odoo二开(1)windows下环境配置教程,配置好环境,接下来会按照初始化直至这个模块能正确安装到你的odoo上为例展开,这里笔者的odoo版本是16,python版本是3.10.10,使用的环境是windows,很基础的操作这里不多赘述,大家自行百度。
  2. 到pycharm的terminal里输入
python odoo-bin scaffold  D:\ERP\odoo-16.0\myAddons\myStudy 
  1. odoo-bin scaffold【后续都会叫他脚手架】会自动生成一个模块必要的所有文件和文件夹到指定的地址,还有一些展开参数,这里不做说明,可自行百度。
# -*- coding: utf-8 -*-
{
    'name': "my_study",

    'summary': """
        测试学习模块""",

    'description': """
        测试学习模块</br><h1>报告上传模块测试</h1>
    """,

    'author': "phoney",
    'website': "",

    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml
    # for the full list
    'category': 'Services',
    'version': '0.1',

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

    # always loaded
    'data': [
        # 'security/ir.model.access.csv',
        'views/views.xml',
        'security/study_security.xml',
        'security/ir.model.access.csv',
    ],
    # only loaded in demonstration mode
    'installable': True,
    'application': True,
}
  1. 上面这段 manifest.py 代码解释:
  1. 接下来,先初始化models/models.py,即数据库初始化,这里用了一个检测报告模块做例子,考虑到一个检测报告需要文件名,上传人,订单号还有上传日期,以及一个可能需要的url,比较简单。
from odoo import models, fields, api
class my_study(models.Model):
    _name = 'my_study.pzbg'
    _description = '报告模块'
    filename = fields.Char()
    operator = fields.Char()
    order = fields.Char()
    upload_time = fields.Date()
    url = fields.Char()
  1. 完成后开始着手准备相关界面'views/views.xml,下文属于准备视图的展示内容,简单可以理解为规划阶段
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
  <data>
    <record model="ir.ui.view" id="my_study_list">
      <field name="model">my_study.pzbg</field>
  <field name="arch" type="xml">
       <tree string="study tree"  editable="bottom">
      <field name="filename" string="文件名"/>
      <field name="operator"/>
      <field name="order"/>
      <field name="upload_time"/>
      <field name="url"/>
     </tree>
  </field>
    </record>

 </data>
</odoo>

要点分析:

  1. 继续编辑'views/views.xml,实现打开模型视图的功能,简单理解为修路阶段,光有规划没用,还得用路把规划和人连接起来。
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
  <data>
    <record model="ir.ui.view" id="my_study_list">
...省略了,就是上一块代码
    </record>

    <record model="ir.actions.act_window" id="my_study_tree_action_window">
       <field name="name">my_study_action_window</field>
            <field name="res_model">my_study.pzbg</field>
         <field name="type">ir.actions.act_window</field>
            <field name="view_mode">tree,form</field>
        <field name="view_id" ref="my_study_list"/>
            <field name="help" type="html">
                <p class="o_view_nocontent_smiling_face">查询检测报告单
                </p>
            </field>
    </record>
 </data>
</odoo>

要点分析

  1. 接下来为这个view视图添加菜单按钮,简单理解为修一个大门。
.
.
.省略节省空间,继续之前的代码写
    <!-- 顶层菜单按钮,官方是这么解释的 -->
    <menuitem name="检单查询" id="my_study.menu_root"/>
    <!-- 第二级菜单-->
    <menuitem name="报告展示方式" id="my_study.menu_1" parent="my_study.menu_root"/>
<!-- 第二级菜单的子菜单-->
 <menuitem name="树状展示" id="my_study.menu_1_list" parent="my_study.menu_1"
              action="my_study_tree_action_window"/>
    <menuitem name="表单展示" id="my_study.menu_2_list" parent="my_study.menu_1"
              action="my_study_form_action_window"/>
 </data>
</odoo>

要点分析:

  1. 接下来初始化security/study_security.xml文件,来为用户赋予权限,这一步很重要,否则你后续安装好后无法找到插件了。
<?xml version="1.0" ?>
<odoo>
 <record id="my_study_category" model="ir.module.category">
 <field name="name">my_study</field>
 </record>

<record id="my_study_group_user" model="res.groups">
 <field name="name">my_studyUser</field>
 <field name="category_id" ref="my_study_category" />
 <field name="implied_ids" eval="[(4, ref('base.group_user'))]" />
 </record>

<record id="my_study_group_manager" model="res.groups">
 <field name="name">my_studyManager</field>
 <field name="category_id" ref="my_study_category" />
 <field name="implied_ids" eval="[(4, ref('my_study_group_user'))]" />
 <field name="users" eval="[
 (4, ref('base.user_root')),
 (4, ref('base.user_admin'))
 ]" />
 </record>

</odoo>

要点分析:

  1. 新添加的模型还有一项必不可少的步骤,那就是配置加载权限。odoo使用的是csv文件,通过把csv文件里的列表数据加载到”ir.model.access”模型中实现。所以通常把这也的csv文件名称定义为”ir.model.access.csv”。
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
checkout_user,Checkout User,my_study.model_my_study_pzbg,my_study.my_study_group_user,1,1,1,0
checkout_manager,Checkout Manager,my_study.model_my_study_pzbg,my_study.my_study_group_manager,1,1,1,1

到这里一个模块就基本初始化完毕了

上一篇 下一篇

猜你喜欢

热点阅读