Grundlagen Modulstruktur

Um ein neues Modul anzulegen begibt man sich in das Verzeichnis in welchem sich odoo-bin befindet und führt folgenden Befehl aus:

odoo-bin scaffold <Modul name> <Ort an dem es gespeichert werden soll>

Dies führt zu diesem Verzeichnisbaum.

__init__.py

In der jeweils relevanten __init__.py müssen die python Dateien des entsprechenden Verzeichnisses importiert werden. Im Hauptverzeichnis werden die __init__.py Dateien aller Unterverzeichnisse importiert. 

models/__init__.py

import models

controllers/__init__.py

import controllers

__init__.py

import models
import controllers


Jede neue *.py Datei muss auch auf diese Weise hinzugefügt werden, sonst wird sie nicht erkannt. 

__manifest__.py

Standardmäßig sieht die Manifestdatei so aus:

# -*- coding: utf-8 -*-
{
    'name': "module",


    'summary': """
        Short (1 phrase/line) summary of the module's purpose, used as
        subtitle on modules listing or apps.openerp.com""",

    'description': """
        Long description of module's purpose
    """,

    'author': "My Company",
    'website': "http://www.yourcompany.com",

    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
    # for the full list
    'category': 'Uncategorized',
    'version': '0.1',

    # any module necessary for this one to work correctly
    'depends': ['base'],

    # always loaded
    'data': [
        # 'security/ir.model.access.csv',
        'views/views.xml',
        'views/templates.xml',
    ],
    # only loaded in demonstration mode
    'demo': [
        'demo/demo.xml',
    ],
}

Besonders wichtig sind hier depends und data.

depends

Dies ist der Ort an welchem alle Abhängigkeiten des Moduls eingetragen werden. Bezieht man sich beispielsweise auf Felder die von einem anderen Modul erzeugt werden, so muss dieses hier als Abhängigkeit vermerkt werden.

data

Anders als das Verhalten des Moduls wird die Anzeige(View) nicht mit python sondern mit xml relisiert. data enthält die Pfade zu allen views. Neue views müssen hier nachgetragen werden.

views

Grundsätzlich unterscheidet man zwischen zwei Arten view. Zum eine  gibt es das Aussehen der Benutzeroberfläche zum anderen gibt es druckbare Dokumente(reports). Die reports werden auf die selbe Weise wie die Oberfläche definiert(xml).