Professional Documents
Culture Documents
Introduction
This article will explain the basic steps involved in developing custom OpenERP modules. It is a Hello World kind of guideline, therefore you wont be able to find out all the theories behind OpenObject platform here. Instead you will get all the necessary information to get started with. Sample module given here is fully functional and tested on OpenERP version 6.0-RC2 (with Web Client on Chrome browser). You will be able to download the complete source code at the end of this article.
Module Description
The sample module we are going to develop is a simple Notebook application. It helps to take down notes and contains just three fields namely Title, Note and Date in its data model.
Module Structure
An OpenERP module consists of some basic elements as explained below. Note that what is explained here is only the basic files required and structure will be more complex in real world applications.
l
l l
module_name.py contains the application logic and database table structure definition. __init__.py init script will load the applications main python-module and related in application initialization. view_name.xml contains the application interface definition and menu structure. __openerp__.py is the module descriptor file. In previous versions of OpenERP this was known as __terp__.py
File Contents
Even though there is no specific order, I am going to start with the main python class (module) of our OpenERP module. This will handle the core functionality of the module and also will generate the database table to store related data.
[ notebook.py ]
01 02 03 04 05 06 07 08 09 10 11 12 13
from osv import fields, osv import time class notebook(osv.osv): _name = "notebook" _description = "Simple Notebook" _columns = { 'title' : fields.char('Title', size=30, required=True), 'note' : fields.text('Note'), 'note_date' : fields.date('Date'), } notebook()
[ __init__.py ]
1 import notebook
?
After that we define the view and menu structure of our module.
[ notebook_view.xml ]
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
<?xml version="1.0" encoding="utf-8"?> <openerp> <data> <record model="ir.ui.view" id="notebook_tree_view"> <field name="name">notebook.tree</field> <field name="model">notebook</field> <field name="type">tree</field> <field name="arch" type="xml"> <tree string="Notebook"> <field name="title"/> <field name="note"/> <field name="note_date"/> </tree> </field> </record> <record model="ir.ui.view" id="notebook_form_view"> <field name="name">notebook.form</field> <field name="model">notebook</field> <field name="type">form</field> <field name="arch" type="xml"> <form string="Notebook"> <field name="title"/> <field name="note"/> <field name="note_date"/> </form> </field> </record>
<record model="ir.actions.act_window" id="action_notebook_form" <field name="name">notebook</field> <field name="res_model">notebook</field> </record> <menuitem name="Notebook" icon="terp-project" id="notebook_menu" <menuitem name="Notes" parent="notebook_menu" id="notebook_menu_mainform" </data>
[ __openerp__.py ]
01 02 03 04 05 06 07 08 09 10 11 12 13 14 { "name" : "notebook", "version" : "0.1", "author" : "Keerthi Bandara @ iBCScorp", "website" : "http://www.ibcscorp.com/", "category" : "Generic Modules/Others", "depends" : ["base"], "description" : "Simple demo module", "init_xml" : ["notebook_view.xml"], "demo_xml" : [], "update_xml" : [], "active": False, "installable": True }
?
2. After importing new module, it will appear under OpenERP Modules list. It can be easily located by Searching for the module name. Once you found the module, mark it for installation, then select the check box in front of the module and click Apply Scheduled Upgrades link.
Conclusion
Motivation behind preparing this article was the difficulty I have faced in finding out a proper start up guide in custom OpenERP module development. Even official documentation appeared to be incomplete/inconsistent at the moment of writing this article. Anyway there is a lot more to explore in OpenERP module development. As an OpenERP partner, iBCScorp is always willing to help you in your OpenERP implementation project. If you found this post useful just leave a comment and do not hesitate to contact us on any OpenERP related issue. Share and Bookmark: Custom Module, openerp