2 Star 3 Fork 0

lmch / odoo-misc-plugin

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

功能简介

插件支持的功能:

  • 创建Odoo模块
  • 创建Model,根据模型名称创建Python代码以及视图代码
  • 继承Model,根据模型名称创建Python代码
  • 创建OWL组件,在目录static/src/components下创建组件代码模板,根据选择的类型生成不同的组件模板,支持的类型:action/field/common
  • 创建Web服务,在static/src/services目录下生成服务代码模板
  • 获取导入路径,选择Odoo模块static/src/目录下的js文件,可以自动生成导入路径
  • 打开导入文件,使用该功能需要先在vscode中配置Odoo模块的路径
  • 提供一些代码片段。vscode插件市场中有很多关于odoo代码片段的插件(搜索关键词odoo snippets
    • owhk: 导入OWL中定义的Hooks
    • owlc: 导入OWL的声明周期函数
    • ohk: 导入Odoo Web中定义的Hooks(不是全部,只导入一些比较常见的)
    • opatch: 对组件进行patch

使用说明

右键单击对应的目录/文件,在弹出菜单的底部选择Odoo Misc菜单,然后单击具体的子菜单。

  • 创建Odoo模块:单击模块需要存放的目录
  • 创建Model,单击Odoo模块目录
  • 继承Model,单击Odoo模块目录
  • 创建OWL组件,单击Odoo模块目录
  • 创建Web服务,单击Odoo模块目录
  • 获取导入路径,单击Odoo模块static/src/目录下的js文件

创建Odoo模块

点击菜单后,会弹出提示框

  1. 根据提示,输入模块名称,模块名称如果包含多个单词,使用_进行连接,例如sale_order
  2. 之后选择模块对应的Odoo版本,不同的版本的__manifest__.py文件会有所不同
  3. 最后选择是否包含前端内容,如果包含前端内容,会生成static目录,以及在__manifest__.py文件中导入相关路径

模块的目录结构:

sale_order/
|-- models/
|   |-- __init__.py
|-- security/
|   |-- ir.model.access.csv
|-- static/
|   |-- description/
|   |-- src/
|-- views/
|-- wizard/
|   |-- __init__.py
|-- __init__.py
|-- __manifest__.py

创建Model

点击菜单后,在弹出的输入框中输入模型名称,模型名称使用.分割,例如sale.order。输入完成后点击回车,即可生成模型的python代码、视图代码,还会在ir.model.access.csv文件中添加权限,视图文件与Python文件会自动添加到__manifest__.pymodels/__init__.py中。

  • 注意:models/__init__.pyir.model.access.csv文件末尾需要保留空行

生成的models/sale_order.py文件

import logging

from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError

_logger = logging.getLogger(__name__)


class SaleOrder(models.Model):
    """
    """
    _name = 'sale.order'
    _description = ''

生成的views/sale_order_views.xml文件

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <!-- sale.order 列表视图 -->
    <record id="sale_order_view_tree" model="ir.ui.view">
        <field name="name">sale.order.view.tree</field>
        <field name="model">sale.order</field>
        <field name="arch" type="xml">
            <tree>

            </tree>
        </field>
    </record>
    <!-- sale.order 表单视图 -->
    <record id="sale_order_view_form" model="ir.ui.view">
        <field name="name">sale.order.view.form</field>
        <field name="model">sale.order</field>
        <field name="arch" type="xml">
            <form string="">
                <header></header>
                <sheet>
                    <group string="隐藏字段" invisible="1">
                        <field name="id"/>
                    </group>
                    <group>
                        <group>

                        </group>
                        <group>
                        </group>
                    </group>
                </sheet>
            </form>
        </field>
    </record>
    <!-- sale.order 搜索视图 -->
    <record id="sale_order_view_search" model="ir.ui.view">
        <field name="name">sale.order.view.search</field>
        <field name="model">sale.order</field>
        <field name="arch" type="xml">
            <search string="">
                <field name=""/>
                <filter string="当前月份" name="this_month" domain="[('时间字段', '&gt;=', context_today().strftime('%Y-%m-01'))]"/>
            </search>
        </field>
    </record>
    <!-- sale.order.act_window -->
    <record id="sale_order_action" model="ir.actions.act_window">
        <field name="name"></field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">sale.order</field>
        <field name="view_mode">tree,form</field>
        <field name="target">current</field>
    </record>
</odoo>

ir.model.access.csv文件自动写入内容(最后的空行不要删除)

id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_sale_order_user,sale_order_user,model_sale_order,,1,1,1,0
access_sale_order_manager,sale_order_manager,model_sale_order,,1,1,1,1
,,,,,,,

继承Model

点击菜单后,在弹出的输入框中输入要继承的模型名称,以.分割,例如product.template,输入完成后,点击回车,即可生成模型的Python代码,以及自动写入到models/__init__.py文件中

生成的代码:

import logging

from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError

_logger = logging.getLogger(__name__)


class ProductTemplate(models.Model):
    """
    """
    _inherit = 'product.template'

创建OWL组件

点击菜单后,在弹出的输入框中输入组件名称,名称以空格进行分割,例如image field。之后选择组件模板类型,比如选择field类型,最终生成的代码:

  • 如果模块下没有static路径,无需手动创建,插件会自动创建
/** @odoo-module **/

import { registry } from "@web/core/registry";
import { standardFieldProps } from "@web/views/fields/standard_field_props";

export class ImageField extends Component {
    setup() {

    }
}

ImageField.template = "sale_order.ImageField";
ImageField.components = {};

ImageField.props = {
    ...standardFieldProps,
};
ImageField.defaultProps = {};
ImageField.extractProps = ({ attrs }) => {
    return {

    };
};

ImageField.displayName = "";
ImageField.supportedTypes = [""];

registry.category("fields").add("image", ImageField);

创建Web服务

点击菜单后,在弹出的输入框中输入服务名称,使用空格进行分割,例如cos service,完成后输入回车,会生成static/src/services/cos_service.js文件

生成的代码:

/** @odoo-module */

import { registry } from "@web/core/registry";

export const cosService = {
    dependencies: ["rpc", "orm"],
    async start(env, { rpc, orm }) {

        return {  };
    },
};

registry.category("services").add("cosService", cosService);

获取导入路径

选择static/src/**/*路径下的js文件,右键单击文件,点击获取导入路径菜单项,文件的导入路径会自动复制到剪切板。

  • 注意:只有点击static/src/**/*路径下的.js类型的文件才会显示该菜单

比如点击sale_order/static/src/services/cos_service.js生成下列导入路径:

import {  } from "@sale_order/services/cos_service";

打开导入文件

  • 配置:先配置Odoo模块的路径,打开vscode的设置,点击工作区,左侧菜单中找到扩展,然后在扩展列表中找到Odoo Misc配置,右侧配置编辑界面点击Add Item,将要搜索的Odoo模块路径添加进去。
  • 使用:在JS文件中选中"@web/views/fields/standard_field_props";,然后点击鼠标右键,在菜单栏点击Odoo Misc: 打开导入文件即可打开导入文件
    • 注意:选中内容的开始与结尾要包含"
MIT License Copyright (c) 2019 Droggol Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

vscode插件,通过模板快速创建模块,通过向导快速创建模型、继承模型 展开 收起
NodeJS 等 3 种语言
MIT
取消

发行版 (2)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
NodeJS
1
https://gitee.com/547116382/odoo-misc-plugin.git
git@gitee.com:547116382/odoo-misc-plugin.git
547116382
odoo-misc-plugin
odoo-misc-plugin
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891