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). Katalogsrc/cluster_erp/modules/app_store/catalog.jsondosyasıdır.
Adımlar¶
- Modülün
metadata.pydosyasında varlık için birEntityMetabildirin. İngilizce ve Türkçe etiketleri,entity_typedeğ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}"),
},
-
Sütunları ve süzgeçleri olan bir
list_viewekleyin. Liste ucusearchkabul ediyorsasearch_enabled=Trueayarlayı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. -
Alan gruplarıyla bir
formekleyin. Değer dize olarak taşınsın diye para içinfield_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,
),
-
Kaydın birkaç bölümlü bir karta ihtiyacı varsa sekmeleri olan bir
detail_viewekleyin. Olmadan, bir satır formdan kurulan salt okunur bir kayıt kartı açar. Kaynak:webapp/js/gen-list.js:816-844. -
Varlığı
ModuleMeta.entitiesiçine kaydedin ve varlık anahtarını adlandıranview_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",
),
-
Ekran varlığın kendi kodlarının ötesinde belirli bir izne ihtiyaç duyuyorsa bölümde
required_permissionayarlayın. Kaynak:webapp/js/module-app.js:106-108. -
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-1543vesrc/cluster_erp/server/app.py:634-858. -
Yeni
<entity_type>.read,.create,.updateve.deletekodlarını onlara ihtiyaç duyan rollere verin. Sistemadminrolü 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>.createkoduna 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ı.