In this recipe, we will create a new module, make it available in our Odoo instance, and install it.
We will need an Odoo instance ready to use.
If the first recipe in Chapter 1, Installing the Odoo Development Environment, was followed, Odoo should be available at ~/odoo-dev/odoo
. For explanation purposes, we will assume this location for Odoo, although any other location of your preference could be used.
We will also need a location for our Odoo modules. For the purpose of this recipe, we will use a local-addons
directory alongside the odoo
directory, at ~/odoo-dev/local-addons
.
The following steps will create and install a new addon module:
$ cd ~/odoo-dev $ mkdir local-addons
$ mkdir local-addons/my_module
__init__.py
file:$ touch local-addons/my_module/__init__.py
__openerp__.py
file with this line:{'name': 'My module'}
$ odoo/odoo.py --addons-path=odoo/addons/,local-addons/
admin
, enable the Developer Mode in the About box, and in the Apps top menu select Update Apps List. Now Odoo should know about our Odoo module.my_module
. Click on its Install button and the installation will be concluded.An Odoo module is a directory containing code files and other assets. The directory name used is the module's technical name. The name
key in the module manifest is its title.
The __openerp__.py
file is the module manifest. It contains a Python dictionary with information about the module, the modules it depends on, and the data files that it will load.
In the example, a minimal manifest file was used, but in real modules, we will want to add a few other important keys. These are discussed in the next recipe, Completing the module manifest.
The module directory must be Python-importable, so it also needs to have an __init__.py
file, even if it's empty. To load a module, the Odoo server will import it. This will cause the code in the __init__.py
file to be executed, so it works as an entry point to run the module Python code. Because of this, it will usually contain import statements to load the module Python files and submodules.
Modules can be installed directly from the command line using the --init
, or -i
, option. In the past, we had to use the Update Module List to make it available to the Odoo instance. However, at this moment, this is done automatically when the --init or --update are used from the command line.