Struktura modułu

Nowy moduł można łatwo stworzyć poleceniem:

odoo-bin scaffold <nazwa modułu>

To polecenie zakłada wszystkie katalogi i wzory plików.

Strukturę opisuje dwa pliki:

__manifest__.py – opis parametrów

__init__.py – ładowanie modułów Pythona w czasie uruchomienia.

https://www.odoo.com/documentation/10.0/reference/module.html#manifest – struktura pliku __manifest__.py, opisującego moduł.

W manifeście podaje się (element data) pliki xml, które mają zostać przeanalizowane i wczytane do bazy danych (w czasie instalacji).

W __init__ podaje się najczęściej nazwy katalogów w których umieszcza się tematycznie zgrupowane moduły. W każdym katalogu tworzy się plik __init__.py z poleceniami import dla poszczególnych modułów.

Wygląd typowego (zalecanego) drzewa katalogów (zobacz też rysunek http://odootechnical.com/odoo-module-structure/):

├───controllers         # kontrolery (zgodnie z zasadą MVC).
├───data                # Dane (XML) wczytywane do tabel.
├───demo                # Dane demonstracyjne i testowe.
├───doc                 # Dokumentacja techniczna.
├───i18n                # Pliki tłumaczeń (.po).
├───models              # Modele (zgodnie z MVC i ORM).
├───report              # Definicje raportów.
├───security            # Prawa dostępu.
├───static              # Pliki statyczne.
│   ├───description     # Opis widoczny w funkcji zarządzania modułami.
│   ├───lib             # Biblioteki (obce moduły).
│   └───src             # Pliki źródłowe do budowy/wyglądu stron.
│       ├───css         # arkusze styli.
│       ├───img         # Images Grafiki.
│       ├───js          # skrypty Javascript.
│       └───xml         # wzorce XML / web design.
├───test                # Automatyczne testy (YAML).
├───tests               # Testy w Pythonie.
├───views               # Widoki (zgodnie z MVC), menu i akcje definiowane w XML.
└────wizard             # Kreatory (Wizards) do interakcji/pobierania danych od użytkownika.

W głównym katalogu modułu obowiązkowo znajdują się dwa pliki:

__manifest__.py         # Manifest. Struktura Pythona opisująca moduł (dawniej __openerp__.py).
__init__.py         # Plik importujący podkatalogi (inicjowanie modułu)

Manifest

Kompletny opis znajdziesz w https://github.com/sotogarcia/odoo-development/wiki/Manifest-file (zob. też https://github.com/OCA/maintainer-tools/blob/master/template/module/__openerp__.py, http://odoo-80.readthedocs.org/en/latest/reference/module.html).

# -*- coding: utf-8 -*-
{
    'name' : 'module_name',
    'summary' : 'short_description',
    'version' : '1.0',
    'description' : "reStructuredText_description",
    'author' : 'author_name',
    'website' : 'author_website',
    'license' : 'AGPL-3',
    'category' : 'Uncategorized',
    'depends' : [ 'base' ],
    'data' : [
        'security/module_name.xml',
        'security/ir.model.access.csv'
    ],
    'demo' : ['demo/demo.xml'],
    'auto_install' : False,
    <!-- undocumented -->

    'maintainer': 'OpenERP SA',
    'website': 'https://www.domain.com',
    'url': 'http://launchpad.net/openerp-costa-rica',
       'contributors': [ 'Nombre Mostrado <nombre@dominio.com>' ],

       'application': True,
       'installable': True,
       'active': False,
       'sequence': 10,
    "certificate": False,
    'complexity': 'easy',

    'css': [ 'static/src/css/style.css' ],
    'js': [ 'static/src/css/script.js' ],
    'images': [ 'images/src/img/image.png' ],

    'icon': 'static/src/img/icon.png',

    'qweb': [ 'static/src/xml/wzorzec.xml' ],
    'test': [ 'test/test_file.yml' ],
    'init_xml': [ 'data/account.account.type.csv' ],
    'external_dependencies' : { 'python' : ['ldap'] },
}

To co najważniejsze wyliczono poniżej

name

Nazwa modułu

summary

Krótki opis.

category

Jedna z kategorii:

  • Accounting
  • Discuss
  • Document Management
  • eCommerce
  • Human Resources
  • Industries
  • Localization
  • Manufacturing
  • Marketing
  • Point of Sale
  • Productivity
  • Project
  • Purchases
  • Sales
  • Warehouse
  • Website
  • Extra Tools

version

Wersja. Zazwyczaj stosuje się numerację zgodną z wersją Odoo dla której moduł jest przeznaczony.

website

Strona internetowa modułu

license

Licencja. Zalecanie licencje:

  • "GPL-3" for odoo 8.0 and below
  • "LGPL-3" for odoo 9.0 and above

Dla modułów z repozytorium otwartego OCA's stosuje się "AGPL-3".

external_dependencies

Zależności zewnętrzne - na przykład wymagane biblioteki Pythona:

"external_dependencies": {"python" : ["openid"]}