Module Structure
The most important thing while developing a module is its structure. When we create a module, it has its own structure, and we should always make sure that we follow the module structure. A module consists of different components such as models, views, security, etc.
Mainly an Odoo module is declared by its manifest.
Each module requires a python file and a manifest file that are __init__.py file and __manifest__.py file. The basic structure of the module is given below.
A module is also a Python package that consists of __init__ .py file that includes import instructions for the module's numerous Python files. For example, if the module has a single pythonfile.py file, then its __init__.py file contains:
from . import pythonfile
__manifest__.py
We can describe the name of the module, author name, version, description, company, category, etc., in the manifest.
Name - Name of the module.
Description - Brief description of the module.
Version- Here, we can specify the module version.
License - Specify the distribution license
Author - Author name of the module.
Website - Module author’s website URL.
Category - Specify the category name.
Depends - Here, we can specify the list of modules that must be installed before installing the module.
Data - With the installation of the module, these files are installed or updated.
Demo - In active demonstration mode, the data files that are installed or updated.
The module has directories. It includes models, views, demos, static, security, data, wizards, etc.
Models
The model file consists of __init__.py file, which imports all python files on that model's directory.
Views
Views file consists of XML files for the user interface, with the actions and views like forms, lists, etc. The format of creating an XML file is “demo.xml”
Data
Data file contains all data files along with the module's initial data.
Demo
It consists of data files with demonstration data, which is very useful for testing, training, or module evaluation.
i18n
The i18n file contains the translation files, which include .po and .pot files. These files are not required to mention on the manifest file.
Security
It consists of XML files that generate access groups and record rules for security and data files that define access control lists, such as the ir.model.access.csv file.
Controllers
The Controllers folder consists of code files that provide that functionality for website controllers.
Static
All assets are expanded inside the static directory. Files in this directory are public and accessible without a username and password. This directory contains JavaScript, style sheets, images, and other items that aren't listed in the module manifest but need to be referenced in the web template.
Wizard
Wizard contains all files related to wizards. Wizards are used to holding intermediate data in Odoo.
Reports
Odoo helps us to generate pdf documents such as invoices and sales orders. The report directory consists of all the files related to reports.