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).