odoo的命令

odoo的命令

Odoo命令都在odoo.cli包中

元类:CommandType

commands = {}

class CommandType(type):
    def __init__(cls, name, bases, attrs):
        super(CommandType, cls).__init__(name, bases, attrs)
        name = getattr(cls, name, cls.__name__.lower())
        cls.name = name
        if name != 'command':
            commands[name] = cls

所有使用了这个元类的类,都会注册到包内的全局字典commands中:类名为key,类为value

所有命令的基类:Command

class Command(object):
    """Subclass this class to define new odoo subcommands """
    __metaclass__ = CommandType

    def run(self, args):
        pass

可以看到基类使用CommandType作为元类。这意味着所有的子类都会注册到全局字典中。
同时还定义了个函数run。这算是预定义了要实现功能的函数。

命令的实现

以下命令全部都是Command的子类,所以都使用了原类CommandType,并实现了父类的run函数。

odoo.cli.command.Help

根据其它命令中的内容,生成帮助信息,并输出。

odoo.cli.deploy.Deploy

将本地的一个模块部署到指定的服务器上 需要给定本地模块的地址,和远程服务器地址 会将本地模块压缩成zip,然后通过http登录服务器并上传

odoo.cli.scaffold.Scaffold

用来生成一个模块的骨架。主要为了方便做二次开发。

默认使用的模版文件就在odoo.cli包内的template目录里

odoo.cli.shell.Shell

启动odoo,然后使用ipython、ptpython、bpython等创建一个交互环境。可以查询运行中的odoo的一些信息。

个人认为,这个也是方便开发调试的一个工具

odoo.cli.start.Start

也是一个方便开发调试的工具,官方文档的说明是为你的项目快速启动odoo。在启动参数中需要指定项目地址;如果不指定会从当前目录查找。

odoo.cli.server.Server

最重要的命令,启动odoo服务器。

 
comments powered by Disqus