官术网_书友最值得收藏!

Creating the module's basic skeleton

Following the instructions in Chapter 2, Installing and Organizing the Development Environment, we should have the Odoo server code at ~/odoo-dev/odoo/. The best practices say that our code should be kept in its own directory, and never mixed up with Odoo's original code. So, to host our custom modules we will use a new directory alongside Odoo: ~/odoo-dev/custom-addons.

Odoo includes a scaffold command to automatically create a new module directory, with a basic structure already in place. You can learn more about it with the following command:

$ ~/odoo-dev/odoo/odoo-bin scaffold --help

You might want to keep this in mind when you start working on your next module, but we won't be using it right now since we prefer to manually alter the structure for our module.

An Odoo addon module is a directory containing a __manifest__.py descriptor file. It also needs to be Python importable, so it must also have a __init__.py file.

In previous versions, this descriptor file was named __openerp__.py. This name is still supported but is deprecated.

The module's directory name is its technical name. We will use todo_app for it. The technical name must be a valid Python identifier: it should begin with a letter and can only contain letters, numbers, and the underscore character.

If using the command line, we can initialize our module directory, with an empty __init__.py file in it, with these commands:

$ mkdir -p ~/odoo-dev/custom-addons/todo_app
$ touch ~/odoo-dev/custom-addons/todo_app/__init__.py

Next, we need to add the manifest file. It should contain only a Python dictionary, with about a dozen possible attributes. Of them, only the name attribute is required, but the description and author attributes are also highly advised.

Now, create the __manifest__.py file, alongside the __init__.py file, with the following content:

{ 
    'name': 'To-Do Application', 
    'description': 'Manage personal to-do tasks.', 
    'author': 'Daniel Reis', 
    'depends': ['base'], 
    'application': True, 
} 

The depends attribute can have a list of other modules that are required. Odoo will have them automatically installed when this module is installed. It's not a mandatory attribute, but it's advised to always have it. If no particular dependencies are needed, we should depend on the core base module.

You should be careful to ensure all dependencies are explicitly set here; otherwise, the module may fail to install in a clean database (due to missing dependencies) or have loading errors if by chance the other required modules are loaded afterward.

For our application, we don't need any specific dependencies, so we depend on the base module only.

To be concise, we chose to use only some essential descriptor keys:

  • name is a string with the addon module title.
  • description is a long text with the description of the features, usually in RST format.
  • author is the author name. It is a string, but can contain a comma-separated list of names.
  • depends is a list of the addon modules it depends on. They will be automatically installed before this module is.
  • application is a Boolean flag, declaring whether the addon module should be featured as an app in the Apps list.

Since Odoo 8.0, instead of the description key, we can use a README.rst or README.md file in the module's top directory. If both exist, then the manifest description is used.

In a real-world scenario, we recommend that you also use the additional keys, since they are relevant for the Odoo apps store:

  • summary is a string displayed as a subtitle for the module.
  • version, by default, is 1.0. It should follow versioning rules (see  http://semver.org/ for details). It is a good practice to use the Odoo version before our module version, for example: 11.0.1.0.
  • license identifier, by default considered to be LGPL-3.
  • website is a URL to find more information about the module. This can help people find more documentation or the issue tracker to file bugs and suggestions.
  • category is a string with the functional category of the module, which defaults to Uncategorized. The list of existing categories can be found in the security Groups form (at Settings | User | Groups), in the Application field drop-down list.

These other descriptor keys are also available:

  • installable is by default True but can be set to False to disable a module.
  • auto_install, if set to True, will be automatically installed as soon as all its dependencies are already installed. It is used for "glue" modules, connecting two features together as soon as both are installed in the same instance.
主站蜘蛛池模板: 东方市| 大兴区| 武平县| 鄂州市| 高要市| 松溪县| 二连浩特市| 略阳县| 沈丘县| 娱乐| 正宁县| 镇坪县| 射洪县| 七台河市| 兴和县| 皮山县| 嘉鱼县| 秦皇岛市| 巧家县| 通辽市| 徐闻县| 吐鲁番市| 聊城市| 怀宁县| 工布江达县| 岳西县| 百色市| 乌兰浩特市| 方城县| 麟游县| 扎兰屯市| 项城市| 南岸区| 元江| 顺平县| 郓城县| 方城县| 广德县| 荔波县| 华蓥市| 曲松县|