• 重写odoo笔记(三)创建自己的模块


    简介

    不管别人教学怎么样,我喜欢用脚手架

    一:scaffold

    pycharm打开终端,

     

     如果是PS的,就去激活一下虚拟环境

    cmd powershell命令类似

    cmd是bat批处理

    powershell是ps1脚本

    python odoo-bin scaffold name(模块名称) destinaton(要存放模块的目录)

    本例做个todo吧。

    在myaddons下生成了jack_todo这么一整套odoo模块结构

    二:安装模块

    修改过py文件,需要重启服务,重启一下,开发者模式下去模块更新本地模块,然后搜索todo

    可以安装一下,不过什么都没有。

     

    三:myaddons/jack_todo/__manifest__.py

    __manifest__.py模块配置文件

    自己翻译着改改吧

    我喜欢写:

    'category': 'Hidden',   
    'installable': True,
    'application': True,
    'auto_install': False,

     这样就可以不用搜索,直接显示在技术下面,省的搜索了。

    四:myaddons/jack_todo/models/models.py

    models.py

    模型文件

     1 # -*- coding: utf-8 -*-
     2 
     3 from odoo import models, fields, api
     4 
     5 
     6 class jack_todo(models.Model):     #模型类名,不能重复,所以我带上jack,一般不重复。
     7     _name = 'jack_todo.jack_todo'   #模型名,表名,不能重复
     8     _description = 'jack_todo.jack_todo'  #说明,可以随便改
     9 
    10     #下面是字段名
    11     name = fields.Char()
    12     value = fields.Integer()
    13     value2 = fields.Float(compute="_value_pc", store=True)
    14     description = fields.Text()
    15 
    16     @api.depends('value')
    17     def _value_pc(self):
    18         for record in self:
    19             record.value2 = float(record.value) / 100
    20 
    21     to_do_name=fields.Char()   #任务名
    22     ded_line=fields.Datetime() #截至时间
    23     is_done=fields.Boolean()   #是否完成
    View Code

    从简单的来,原有的取消注释,最下面三行是我加的,任务名,截至时间,是否完成。

    五:views.xml--tree

    myaddons/jack_todo/views/views.xml

    tree视图,列表视图

    第一段,取消注释

     1     <!-- explicit list view definition -->
     2 
     3     <record model="ir.ui.view" id="jack_todo.list"> 
     4 <!--      #id是视图id,不能重复-->
     5       <field name="name">jack_todo list</field>     
     6 <!--      #名字随便写-->
     7       <field name="model">jack_todo.jack_todo</field>  
     8 <!--      #模型名称,model当中的表名-->
     9       <field name="arch" type="xml">
    10         <tree>
    11 <!--          tree视图,列表视图-->
    12           <field name="name"/>    
    13 <!--          #原有字段名-->
    14           <field name="value"/>   
    15 <!--          #原有字段名-->
    16           <field name="value2"/>  
    17 <!--          #原有字段名-->
    18           <field name="to_do_name"/>  
    19 <!--          #新加字段名-->
    20           <field name="ded_line"/>  
    21 <!--          #新加字段名-->
    22           <field name="is_done"/>  
    23 <!--          #新加字段名-->
    24         </tree>
    25       </field>
    26     </record>
    View Code

    六:views.xml--action

     myaddons/jack_todo/views/views.xml

    动作,前端动作

    第二段,取消注释

     1     <!-- actions opening views on models -->
     2 
     3     <record model="ir.actions.act_window" id="jack_todo.action_window">   
     4 <!--      #继承自"ir.actions.act_window",id名不能重复-->
     5       <field name="name">jack_todo window</field>                        
     6 <!--      #名字随便写-->
     7       <field name="res_model">jack_todo.jack_todo</field>                 
     8 <!--      #从哪个模型返回,表名-->
     9       <field name="view_mode">tree,form</field>                           
    10 <!--      #视图类型,tree form-->
    11     </record>
    View Code

    七:views.xml--server action

     myaddons/jack_todo/views/views.xml

    动作,服务器动作

    第三段,取消注释

     1     <!-- server action to the one above -->
     2 
     3     <record model="ir.actions.server" id="jack_todo.action_server">         
     4 <!--      #继承自"ir.actions.act_window",id名不能重复-->
     5       <field name="name">jack_todo server</field>                          
     6 <!--      #名字随便写-->
     7       <field name="model_id" ref="model_jack_todo_jack_todo"/>             
     8 <!--      #从哪个模型返回,表名-->
     9       <field name="state">code</field>                                     
    10 <!--      #动作类型code  动作内容开始-->
    11       <field name="code">
    12         action = {
    13           "type": "ir.actions.act_window",
    14           "view_mode": "tree,form",
    15           "res_model": model._name,
    16         }
    17       </field>                                                              
    18 <!--      #动作内容结束,和前面一样,继承自 ir.actions.act_window 视图类型tree form,模型名,在前面model_id定义过了,所以这里写model._name-->
    19     </record>
    View Code

    八:views.xml--menuitem

     myaddons/jack_todo/views/views.xml

    菜单,终于到了起点。

    最后几段,取消注释

     1     <!-- Top menu item -->
     2     
     3     <menuitem name="jack_todo" id="jack_todo.menu_root"/>
     4 <!--    顶级菜单,点左上角的时候,出来的菜单名-->
     5     <!-- menu categories -->
     6 
     7     <menuitem name="Menu 1" id="jack_todo.menu_1" parent="jack_todo.menu_root"/>
     8     <menuitem name="Menu 2" id="jack_todo.menu_2" parent="jack_todo.menu_root"/>
     9 <!--    二级菜单-->
    10     <!-- actions -->
    11 
    12     <menuitem name="List" id="jack_todo.menu_1_list" parent="jack_todo.menu_1"
    13               action="jack_todo.action_window"/>
    14     <menuitem name="Server to list" id="jack_todo" parent="jack_todo.menu_2"
    15               action="jack_todo.action_server"/>
    16 <!--    三级菜单-->
    View Code

    九:安装模块

    前面好几部都没重启,尤其是修改了models.py,需要重启,重启服务,安装模块。

    还是什么变化都没有。

    十:表级别权限

    myaddons/jack_todo/security/ir.model.access.csv

    ir.model.access.csv

    看名字都能看出来,model的权限

    不管它是什么了。默认值够用,以后再解释。

    __manifest__.py文件中

    将这个文件的注释取消。再重启升级一下。

    'data': [
    'security/ir.model.access.csv',
    'views/views.xml',
    'views/templates.xml',
    ],

     

     

     十一:结语

    先随便搞一个出来好了。

    自己的应用。

    后面慢慢学习各个细节。

  • 相关阅读:
    strftime和strptime函数对时间的转换操作
    第四章文件和目录学习笔记
    getenv和putenv在获取和设置环境变量中的使用
    SQL 常用语句以及函数(个人收藏)
    详测 Generics Collections TQueue (2): Create、Count、Clear、TrimExcess
    详测 Generics Collections TQueue (1): Enqueue、Dequeue、Peek
    详测 Generics Collections TList (9): BinarySearch
    详测 Generics Collections TList (8): Sort
    详测 Generics Collections TList (4): AddRange、InsertRange、DeleteRange
    详测 Generics Collections TList (7): Items、Contains
  • 原文地址:https://www.cnblogs.com/jackadam/p/16463495.html
Copyright © 2020-2023  润新知