Odoo'nun en güçlü yanı, hazır modüllerin bittiği yerde başlar. Python + XML ile şirkete özel iş kurallarını sisteme katıp, standart Odoo arayüzünde çalıştırmak mümkün. Bu yazıda custom modül geliştirmenin adımlarını, en iyi pratiklerini ve deploy stratejilerini ele alacağız.
01. Modül Anatomisi
Bir Odoo modülü klasör yapısı olarak:
- manifest.py (metadata)
- models/ (Python iş kuralları)
- views/ (XML arayüz tanımları)
- security/ (erişim kuralları)
- data/ (varsayılan kayıtlar)
- static/ (icon, css, js)
Kısa bir modül 50–100 satır kodla çalışır.
02. Model Tanımı ve Miras Alma
Odoo'nun ORM'i (Object-Relational Mapper) veri tabanı ile Python sınıflarını eşleştirir. Yeni model tanımı için: class MyModel(models.Model): _name = "my.model"; ve alanlar tanımlanır. Mevcut modele alan eklemek için _inherit kullanılır.
03. Görünüm (View) Tanımlama
Formlar, listeler, arama filtreleri XML ile tanımlanır. inherit_id özniteliği ile mevcut Odoo formuna alan eklemek mümkün; xpath ifadeleriyle nereye yerleşeceği belirlenir.
04. Studio vs Kod
Basit değişiklikler (yeni alan eklemek, form değiştirmek) Studio ile kod yazmadan yapılabilir. Ama karmaşık iş kuralları, otomatik hesaplamalar veya harici API entegrasyonu için Python kod yazımı gerekir. Kod tabanlı modüller Studio'dan daha bakım dostu.
05. Deploy ve Versiyon Kontrolü
Custom modüller Git'te versiyonlanmalı. odoo.sh, kendi Git repository'nizi otomatik build eden bir platform. Self-hosted kurulumlarda ise CI/CD pipeline'ları ile deploy otomatikleştirilir.