Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Web uygulaması

Nasıl yapılır

Metadata ile ekran ekleyin

EntityMeta ve bir kenar çubuğu bölümü bildirerek, web uygulaması kodu yazmadan bir modül uygulamasına bir varlık için liste, form ve kayıt kartı ekleyin.

Bu kılavuz var olan bir modül uygulamasına yeni bir varlık ekranı ekler. Varlığı modülün metadata'sında bildirir ve bir kenar çubuğu bölümü eklersiniz; web uygulaması ardından webapp/ içinde hiçbir değişiklik olmadan liste, oluşturma formu ve kayıt kartı içeren bir sekme gösterir. Arka plan metadata çizimi sayfasındadır. Varlığın arka uç rotalarını yazmak bir arka uç modülü yazın sayfasında anlatılır.

Ön koşullar

  • Modül vardır ve modül kayıt defteri tarafından yüklenir; bkz. modül yaşam döngüsü.
  • Varlığın modülün /api/v1/<module> öneki altında listeleme, getirme, oluşturma, güncelleme ve silme için HTTP rotaları vardır (src/cluster_erp/core/module_base.py:37-38).
  • Modülün uygulama kataloğunda screen: "module" taşıyan bir uygulaması vardır; böylece bir modül uygulaması olarak açılır (webapp/js/home.js:2429). Katalog src/cluster_erp/modules/app_store/catalog.json dosyasıdır.

Adımlar

  1. Modülün metadata.py dosyasında varlık için bir EntityMeta bildirin. İngilizce ve Türkçe etiketleri, entity_type değerini ve modül önekine göreli uç yollarını verin. Kaynak: src/cluster_erp/core/metadata.py:553-649.

src/cluster_erp/modules/currencies/metadata.py:302-313 dosyasından:

python PAYMENT_TERM_META = EntityMeta( label={"en": "Payment Term", "tr": "Ödeme Koşulu"}, label_plural={"en": "Payment Terms", "tr": "Ödeme Koşulları"}, entity_type="payment_term", is_settings_entity=True, endpoints={ "list": EndpointMeta(method="GET", path="/payment-terms/"), "create": EndpointMeta(method="POST", path="/payment-terms/"), "get": EndpointMeta(method="GET", path="/payment-terms/{id}"), "update": EndpointMeta(method="PUT", path="/payment-terms/{id}"), "delete": EndpointMeta(method="DELETE", path="/payment-terms/{id}"), },

  1. Sütunları ve süzgeçleri olan bir list_view ekleyin. Liste ucu search kabul ediyorsa search_enabled=True ayarlayın; liste o zaman bir arama alanı gösterir ve varlık komut paletinde aranabilir olur. Kaynak: webapp/js/gen-list.js:582-597, webapp/js/home.js:1241-1243.

  2. Alan gruplarıyla bir form ekleyin. Değer dize olarak taşınsın diye para için field_type="decimal" kullanın. Kaynak: webapp/js/gen-form.js:503-506, para ve Decimal.

src/cluster_erp/modules/currencies/metadata.py:365-373 dosyasından:

python FieldMeta( key="code", label={"en": "Code", "tr": "Kod"}, field_type="string", required=True, max_length=20, weight="hero", immutable_on_edit=True, ),

  1. Kaydın birkaç bölümlü bir karta ihtiyacı varsa sekmeleri olan bir detail_view ekleyin. Olmadan, bir satır formdan kurulan salt okunur bir kayıt kartı açar. Kaynak: webapp/js/gen-list.js:816-844.

  2. Varlığı ModuleMeta.entities içine kaydedin ve varlık anahtarını adlandıran view_type="list" bir kenar çubuğu bölümü ekleyin. Kaynak: webapp/js/module-app.js:115-116.

src/cluster_erp/modules/currencies/module.py:132-141 dosyasından:

python SidebarSectionMeta( key="payment_term_list", label={ "en": "Payment Terms", "tr": "Ödeme Koşulları", }, view_type="list", icon="payments", entity="payment_term", ),

  1. Ekran varlığın kendi kodlarının ötesinde belirli bir izne ihtiyaç duyuyorsa bölümde required_permission ayarlayın. Kaynak: webapp/js/module-app.js:106-108.

  2. Sunucuyu yeniden başlatın. Metadata belgesi süreç başına bir kez kurulur ve her varlığın izin kodları açılışta metadata'dan tohumlanır. Kaynak: 92f8051 commit'inde src/cluster_erp/server/app.py:1530-1543 ve src/cluster_erp/server/app.py:634-858.

  3. Yeni <entity_type>.read, .create, .update ve .delete kodlarını onlara ihtiyaç duyan rollere verin. Sistem admin rolü her kodu kendiliğinden alır. Bkz. roller ve izinler.

Sonucu doğrulayın

  • Modül uygulamasını açın. Modülün birden fazla sekmesi olduğunda bölüm etiketiyle yeni bir sekme görünür (webapp/js/module-app.js:148-168).
  • Sekme <entity_type>.create koduna sahip bir kullanıcı için Yeni Ekle (common.add), okuma erişimi olan bir kullanıcı için liste satırlarını gösterir (webapp/js/gen-list.js:396-406, webapp/js/gen-list.js:702-711).
  • Bir satıra dokunmak kartı açar; Düzenle (common.edit) forma geçer (webapp/js/gen-form.js:2318-2346).
  • Dil Türkçeyken Türkçe etiket görünür (webapp/js/meta.js:284-288).

Sorun giderme

Belirti Koddaki neden Çözüm
Değişiklikten sonra sunucu başlamıyor EntityMeta, ayrıntı form sekmelerinin her form grubunu kapsadığını denetler ve içe aktarımda ValueError fırlatır (src/cluster_erp/core/metadata.py:617-649) Ayrıntı form sekmelerinde create_only olmayan her grubu listeleyin
Sunucu başlamıyor ve bir alt varlık sekmesini adlandırıyor Bir sub_entity_table sekmesi sütunsuz bir varlığı gösteriyor (src/cluster_erp/server/app.py:547-589) Alt varlığa bir list_view veya sub_table verin
Sekme yok Bölüm hidden_from_bar taşıyor veya kullanıcının required_permission kodu yok (webapp/js/module-app.js:105-108) Bayrağı kaldırın veya izni verin
Sekme Sonuç bulunamadı gösteriyor Bölümün entity değeri ModuleMeta.entities içindeki bir anahtarla eşleşmiyor (webapp/js/gen-list.js:358-362) İki yerde de aynı anahtarı kullanın
Yeni Ekle yok create ucu yok veya kullanıcının <entity_type>.create kodu yok (webapp/js/gen-list.js:396) Ucu bildirin veya izni verin
Değişiklik görünmüyor Metadata belgesi sunucu süreci başına önbelleğe alınır (src/cluster_erp/server/app.py:1530-1543) Sunucuyu yeniden başlatın

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
sidebar section SidebarSectionMeta Bir modülün, modül uygulamasının bir sekmesi olarak gösterilen tek ekranı. kenar çubuğu bölümü src/cluster_erp/core/metadata.py:664

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13