Sebuah fungsi atau fitur pada Odoo diletakkan pada sebuah modul. Sebuah folder yang berisikan file __init__.py dan __manifest__.py adalah syarat minimal agar dapat dikenali sebagai sebuah modul Odoo. Namun sebuah modul yang memiliki fungsi tentunya tidak hanya memiliki 2 buah file tersebut. Untuk melanjutkan, pastikan Anda sudah mempunyai virtual environment. Jika belum, Anda dapat mempelajarinya di artikel Setup Development untuk Odoo. Ini adalah beberapa langkah untuk membuat modul Odoo.
- Buat Python package
Buat folder dan tambahkan __init__.py. File ini adalah file agar sebuah folder dikenali sebagai Python package dan juga berfungsi untuk import package lain yang ada di dalam folder. - Buat manifest
Manifest berisi sebuah dictionary dan mempunyai beberapa key. Nama file manifest adalah __manifest__.py. Jika init berguna untuk inisiasi semua file Python yang biasanya berhubungan dengan struktur data dan alur fungsi, manifest berguna untuk menandakan dependensi modul, menginisiasi file yang berhubungan dengan data pada file XML, CSV, dan juga asset.
Sebagai contoh, buat package dengan nama belajar dan tambahkan init serta manifest. Isi manifest dengan isi berikut.{'name': 'Belajar yukk',
'summary': 'Belajar',
'depends': ['base'],
'author': 'Erlangga',
'data': [],
'license': 'LGPL-3'} - Buat models
Folder models adalah sebuah package Python yang umum digunakan untuk menyimpan banyak model. Agar memudahkan tim dalam development, perjelas nama sebuah Python file sama dengan nama model terkait.
Buat package di dalam belajar bernama models dan tambahkan Python file dengan nama playground.py.
Buat sebuah model Odoo dengan nama Playground dengan field name dan capacity.from odoo import models, fields
class Playground(models.Model): _name = 'playground.playground' _description = 'Playground' name = fields.Char('Playground Name', required=True) capacity = fields.Integer('Capacity') - Buat views
Folder views adalah sebuah folder yang umum digunakan untuk menyimpan view, action, menu, dan report. View minimal untuk suatu model biasanya menggunakan tree view dan form view.
Buat file playground_views.xml dan isi dengan teks berikut.<odoo> <record model="ir.ui.view" id="playground_view_tree"> <field name="name">Playground</field> <field name="model">playground.playground</field> <field name="arch" type="xml"> <tree> <field name="name"/> <field name="capacity"/> </tree> </field> </record> <record model="ir.ui.view" id="playground_view_form"> <field name="name">Playground</field> <field name="model">playground.playground</field> <field name="arch" type="xml"> <form> <sheet> <group> <field name="name"/> <field name="capacity"/> </group> </sheet> </form> </field> </record> <record model="ir.actions.act_window" id="act_view_playground"> <field name="name">Playground</field> <field name="res_model">playground.playground</field> <field name="view_mode">tree,form</field> </record> <menuitem id="menu_playground" name="Playground" action="act_view_playground"/> </odoo>
Import file xml ke dalam data manifest.
'data': [‘views/playground_views.xml’],
- Buat security
Fungsi dari security adalah memberikan access right untuk groups. Access right terdiri dari 4 jenis, yaitu read (baca), write (tulis), create (buat), dan unlink (hapus).
Tanpa membuat security, maka model, views, dan menu yang sudah dibuat tidak akan tampil (jika menggunakan Odoo 12 ke atas) meskipun kita baru berada di fase development.
Jalankan Odoo dan install modul yang sudah dibuat. Ketika Odoo dijalankan, akan terdeteksi bahwa model yang kita buat belum mempunyai access right.
Salin teks log seperti ini.id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
belajar.access_playground_playground,access_playground_playground,belajar.model_playground_playground,base.group_user,1,1,1,1
Buat folder dengan nama security dan tambahkan file ir.model.access.csv.
Isi file dengan teks yang sudah Anda salin.
Import file csv ke dalam data manifest.
'data': [‘security/ir.model.access.csv’, ‘views/playground_views.xml’],
- Buat pakai scaffold
Membuat sebuah modul baru menggunakan scaffold bisa menjadi salah satu cara yang praktis,
namun tidak semua bagian pada struktur modul Odoo kita perlukan.
Setelah Anda membaut modul tersebut, dapat kita lihat struktur file dari modul Anda adalah sebagai berikut.
├── belajar
├── __init__.py
├── __manifest__.py
├── models
│ ├── __init__.py
│ ├── playground.py
├── security
│ └── ir.model.access.csv
└── views
└── playground_views.xml
Meskipun modul yang Anda buat perlu memiliki semua jenis data, namun untuk data manifest pastikan urutan tingkat untuk data saat di-import adalah sebagai berikut:
- Data (sequence, cron, mode data dan function call)
- Groups
- Security
- Report
- Views
- Action
- Menu