İçereği Atla

Odoo OWL kullanarak yeni bir görünüm nasıl tanımlanır ?

7 Mayıs 2026 yazan
Odoo OWL kullanarak yeni bir görünüm nasıl tanımlanır ?
Kod Merkezi Yazılım ve İnternet Hiz. Eğ. Dan. Ltd. Şti., Ahmet Can Bolat

Odoo’da OWL Kullanarak Yeni Bir View Oluşturmak

Odoo üzerinde varsayılan olarak birçok farklı görünüm tipi bulunmaktadır. Ancak bazı projelerde standart görünümler yeterli olmayabilir ve iş süreçlerine özel tamamen yeni bir görünüm geliştirmek gerekebilir.

Bu noktada Odoo’nun modern frontend mimarisi olan OWL (Odoo Web Library) devreye girer. OWL sayesinde kendi özel görünüm tiplerinizi oluşturabilir, Odoo içerisine entegre edebilir ve mevcut görünüm altyapısını genişletebilirsiniz.

Bu örnekte Odoo 19 kullanılarak sıfırdan özel bir Square View geliştireceğiz.

Odoo Community ve Enterprise Görünümleri

Odoo varsayılan olarak farklı görünüm tiplerini hazır şekilde sunmaktadır.

List
Form
Kanban
Pivot
Graph
Activity
Calendar

Odoo Enterprise Sürümünde Ek Olarak Gelen Görünümler

Enterprise sürümde ise Community sürümdeki görünümlere ek olarak şu view tipleri de hazır olarak sunulur:

Gantt
Cohort
Map

Ancak bazı senaryolarda bu yapılar yeterli olmayabilir. Böyle durumlarda OWL altyapısını kullanarak tamamen yeni bir görünüm tipi geliştirebiliriz.

1-) Odoo İçerisinde Yeni Bir Modül Oluşturma

İlk olarak yeni bir modül yapısı oluşturmamız gerekir.

Bunu manuel şekilde yapabiliriz ancak Odoo’nun kendi scaffold komutu işleri oldukça kolaylaştırır.

Bu örnekte Odoo 19 versiyonu kullanılmıştır.

Örnek scaffold komutu:

python3 odoo-bin scaffold square_view /dev/erp/corp/custom_addons

2-) Yeni Görünüm Tipinin Odoo’ya Tanıtılması

Odoo’daki tüm görünüm tipleri ir.ui.view modeli üzerinden yönetilir. Bu nedenle yeni görünüm tipimizi sisteme eklememiz gerekir.

Bu örnekte görünüm ismimiz:

square

Örnek model tanımı:

from odoo import fields, models

class View(models.Model):
_inherit = 'ir.ui.view'

type = fields.Selection(
selection_add=[('square', 'Square')]
)

def _get_view_info(self):
return {
'square': {'icon': 'fa fa-th-large'}
} | super()._get_view_info()

Burada yaptığımız işlem:

  • Odoo’ya yeni bir square görünüm tipi tanıtmak
  • Görünüm için bir ikon belirlemek
  • Sistemin bu görünümü tanıyabilmesini sağlamak

3-) Square View Yapısının Oluşturulması

Şimdi OWL tarafında görünüm mimarisini oluşturmamız gerekiyor.

Odoo’daki modern view sistemi temel olarak şu yapılardan oluşur:

  • Controller
  • Renderer
  • Model
  • ArchParser

Önerilen klasör yapısı:

static/src/views/square/

Bu klasör altında aşağıdaki dosyaları oluşturabiliriz:

square_view.js
square_controller.js
square_controller.xml
square_renderer.js
square_renderer.xml
square_model.js
square_arch_parser.js

4-) Square View Kaydı

Oluşturduğumuz görünümü Odoo registry sistemine kayıt etmemiz gerekir.

Örnek:

import { registry } from "@web/core/registry";

export const SquareView = {
type: "square",
};

registry.category("views").add("square", SquareView);

5-) Controller Yapısı

Controller katmanı:

  • kullanıcı etkileşimlerini yönetir
  • search bar entegrasyonunu sağlar
  • action işlemlerini yönetir
  • renderer ile model arasında bağlantı kurar

Örnek:

export class SquareController extends Component {

setup() {
console.log("Square Controller Initialized")
}

}

6-) Renderer Yapısı

Renderer bileşeni görünümün ekranda nasıl render edileceğini belirler.

Örnek:

export class SquareRenderer extends Component {

static template = "square_view.Renderer"

}

Örnek XML Template:

<t t-name="square_view.Renderer">
<div class="o_square_view">
<h1>Square Renderer Component</h1>
</div>
</t>

7-) Model Yapısı

Model katmanı verilerin backend’den alınmasını sağlar.

Örnek:

export class SquareModel extends RelationalModel {

async fetchData(params) {

this.data = await this.orm.searchRead(
this.config.resModel,
[],
[]
)

}

}

8-) Arch Parser Yapısı

Arch parser XML görünüm yapısını okuyup parse eder.

Örnek:

export class SquareArchParser {

parse(xmlDoc) {

return {
xmlDoc,
}

}

}

9-) XML Görünüm Tanımı

Artık görünümümüzü XML içerisinde kullanabiliriz.

Örnek:

<record id="product_square_view" model="ir.ui.view">
<field name="name">product.square.view</field>
<field name="model">product</field>
<field name="arch" type="xml">
<square/>
</field>
</record>

Action içerisinde kullanım:

<record id="product_action" model="ir.actions.act_window">
<field name="name">Products</field>
<field name="res_model">product</field>
<field name="view_mode">square</field>
</record>

10-) Manifest Dosyası

Son olarak gerekli asset tanımlarını manifest içerisine eklememiz gerekir.

Örnek:

'assets': {
'web.assets_backend': [

'square_view/static/src/views/square/*.js',
'square_view/static/src/views/square/*.xml',

],
},

Sonuç

Bu örnekte OWL altyapısını kullanarak Odoo içerisine tamamen özel bir Square View geliştirdik.

Bu yapı sayesinde:

  • tamamen özelleştirilebilir görünüm mimarileri oluşturabilir,
  • özel dashboard yapıları geliştirebilir,
  • kart bazlı veya grid bazlı gelişmiş ekranlar hazırlayabilir,
  • Odoo’nun standart görünüm limitlerini aşabilirsiniz.

OWL mimarisi modern frontend geliştirme yaklaşımını Odoo içerisine taşımaktadır ve özellikle Odoo 17+ sürümlerinde oldukça güçlü bir yapı sunmaktadır.



Bu gönderiyi paylaş