İçereği Atla

Odoo’da sıfırdan yeni bir modül nasıl oluşturulur?

7 Mayıs 2026 yazan
Odoo’da sıfırdan yeni bir modül nasıl oluşturulur?
Kod Merkezi Yazılım ve İnternet Hiz. Eğ. Dan. Ltd. Şti., Ahmet Can Bolat

Odoo’nun en güçlü özelliklerinden biri modüler mimarisidir.

Bu yapı sayesinde işletmeye özel geliştirmeler yapabilir, yeni uygulamalar oluşturabilir veya mevcut sistemleri genişletebilirsiniz.

Yeni bir modül geliştirmeye başlarken tüm klasör yapısını manuel oluşturmak yerine Odoo’nun kendi sağladığı scaffold komutunu kullanabiliriz.

Bu yöntem:

  • standart klasör yapısını hazırlar,
  • geliştirme sürecini hızlandırır,
  • Odoo standartlarına uygun başlangıç sağlar,
  • özellikle büyük projelerde düzenli bir yapı oluşturur.

Bu örnekte Odoo 19 üzerinde sıfırdan yeni bir modül oluşturacağız.

Scaffold Nedir?

Scaffold komutu Odoo’nun otomatik modül oluşturma aracıdır.

Yeni bir modül için gerekli temel yapıları otomatik olarak üretir.

Örneğin:

  • models
  • views
  • security
  • controllers
  • __manifest__.py

gibi dosya ve klasörler otomatik hazırlanır.

Gereksinimler

Başlamadan önce:

  • Odoo source kurulumu yapılmış olmalıdır
  • Python ortamı hazır olmalıdır
  • Terminal Odoo klasöründe açık olmalıdır

Örnek yapı:

/odoo
/addons
/custom_addons
odoo-bin

Scaffold Komutu Nasıl Kullanılır?

Temel kullanım:

python3 odoo-bin scaffold module_name addons_path

Oluşan Klasör Yapısı

Scaffold sonrası aşağıdakine benzer bir yapı oluşur:

facility_rental/

├── __init__.py
├── __manifest__.py
├── controllers/
├── demo/
├── models/
├── security/
├── views/
└── static/

manifest.py Dosyası

Bu dosya modülün kimlik kartıdır.

Odoo modülü yüklerken ilk olarak bu dosyayı okur.

{
'name': 'Facility Rental',
'version': '19.0.1.0.0',
'summary': 'Facility Rental Management',
'author': 'Codequarters',
'depends': ['base'],
'data': [],
'installable': True,
'application': True,
}

Model Oluşturma

Şimdi örnek bir model oluşturalım.

models/facility.py
from odoo import fields, models

class Facility(models.Model):
_name = 'facility.rental'
_description = 'Facility Rental'

name = fields.Char(string="Name")
description = fields.Text(string="Description")

Model Import İşlemi

models/__init__.py
from . import facility

Bu adım oldukça önemlidir.

Import edilmezse Odoo modeli yüklemez.

Menü ve View Tanımları

Örnek form görünümü:

<odoo>

<record id="facility_rental_view_form" model="ir.ui.view">
<field name="name">facility.rental.form</field>
<field name="model">facility.rental</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="description"/>
</group>
</sheet>
</form>
</field>
</record>

</odoo>

Menü Tanımlama

<odoo>

<menuitem
id="facility_rental_root_menu"
name="Facility Rental"
sequence="10"
/>

</odoo>

Security Dosyası

Odoo modelleri varsayılan olarak erişime kapalıdır. Bu nedenle access dosyası oluşturulmalıdır.

security/ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

access_facility_rental_user,facility.rental.user,model_facility_rental,base.group_user,1,1,1,1

Manifest İçerisine Dosyaları Eklemek

__manifest__.py
'data': [
'security/ir.model.access.csv',
'views/facility_views.xml',
'views/facility_menus.xml',
],

Odoo Modül Geliştirme Süreci Nasıl İlerler?

Genellikle geliştirme süreci şu şekilde ilerler:

  1. Scaffold ile modül oluşturulur
  2. Modeller hazırlanır
  3. Güvenlik kuralları tanımlanır
  4. View yapıları geliştirilir
  5. Menü ve action’lar hazırlanır
  6. Business logic eklenir
  7. OWL veya JavaScript geliştirmeleri yapılır
  8. Test ve deployment süreçleri tamamlanır

Sonuç

Scaffold komutu Odoo modül geliştirme sürecini ciddi şekilde hızlandırır.

Özellikle:

  • standart yapı oluşturma,
  • büyük projelerde düzen sağlama,
  • hızlı prototipleme,
  • ekip geliştirmeleri

için oldukça faydalıdır.

Odoo’nun modüler yapısı sayesinde ERP süreçlerine özel tamamen yeni uygulamalar geliştirmek mümkündür.

Bu gönderiyi paylaş