Chapter 5: Finally, Some UI To Play With¶
Now that we’ve created our new model and its corresponding access rights, it is time to interact with the user interface.
A fejezet végére létrehozunk néhány menüt, hogy hozzáférjünk egy alapértelmezett lista- és űrlapnézethez.
Adatfájlok (XML)¶
Referencia: a témához kapcsolódó dokumentáció megtalálható a Adatfájlok részben.
In Chapter 4: Security - A Brief Introduction, we added data through a CSV file. The CSV format is convenient when the data to load has a simple format. When the format is more complex (e.g. load the structure of a view or an email template), we use the XML format. For example, this help field contains HTML tags. While it would be possible to load such data through a CSV file, it is more convenient to use an XML file.
Az XML fájlokat ugyanazokba a mappákba kell hozzáadni, mint a CSV fájlokat, és hasonlóan kell definiálni a __manifest__.py-ban. Az adatfájlok tartalma szintén sorban betöltődik, amikor egy modul telepítve vagy frissítve van, ezért minden megjegyzés, amit a CSV fájlokra tettünk, igaz az XML fájlokra is. Ha az adatok nézetekhez kapcsolódnak, akkor azokat a views mappába helyezzük.
In this chapter, we will load our first action and menus through an XML file. Actions and menus are standard records in the database.
Megjegyzés
Amikor a teljesítmény fontos, a CSV formátum előnyösebb az XML formátumnál. Ez a helyzet az Odoo-ban, ahol egy CSV fájl betöltése gyorsabb, mint egy XML fájl betöltése.
Az Odoo-ban a felhasználói felület (műveletek, menük és nézetek) nagyrészt egy XML fájlban meghatározott rekordok létrehozásával és összetételével van definiálva. Egy gyakori minta: Menü > Művelet > Nézet. A rekordok eléréséhez a felhasználó több menüszinten navigál; a legmélyebb szint egy művelet, amely a rekordok listájának megnyitását indítja el.
Műveletek¶
Hivatkozás: a témával kapcsolatos dokumentáció megtalálható a Műveletek.
Megjegyzés
Cél: ennek a szakasznak a végére egy műveletnek kell betöltődnie a rendszerbe. Még nem fogunk semmit látni a felhasználói felületen, de a fájlnak be kell töltődnie a naplóba:
INFO rd-demo odoo.modules.loading: loading estate/views/estate_property_views.xml
A műveletek háromféleképpen indíthatók el:
menüpontokra kattintva (amelyek meghatározott akciókhoz kapcsolódnak)
nézetekben lévő gombokra kattintva (ha ezek akciókhoz vannak kapcsolva)
mint kontextuális akciók objektumokon
We will only cover the first case in this chapter. The second case will be covered in a
later chapter while the last is the focus of an
advanced topic. In our Real Estate example, we would like to link a menu to the estate.property
model, so we are able to create a new record. The action can be viewed as the link between the menu
and the model.
Egy alapvető művelet a test_model számára:
<record id="test_model_action" model="ir.actions.act_window">
<field name="name">Test action</field>
<field name="res_model">test_model</field>
<field name="view_mode">list,form</field>
</record>
idegy külső azonosító. Használható a rekord hivatkozására (anélkül, hogy ismernénk az adatbázisban lévő azonosítóját).A
modelértéke rögzített,ir.actions.act_window(Ablak műveletek (ir.actions.act_window)).A
namea művelet neve.A
res_modelaz a modell, amelyre a művelet vonatkozik.view_modeare the views that will be available; in this case they are the list and form views. We’ll see later that there can be other view modes.
Példák mindenhol találhatók az Odoo-ban, de ez egy jó példa egy egyszerű műveletre. Figyeljen az XML adatfájl szerkezetére, mivel a következő gyakorlatban szüksége lesz rá.
Exercise
Adjon hozzá egy műveletet.
Hozza létre az estate_property_views.xml fájlt a megfelelő mappában, és definiálja a __manifest__.py fájlban.
Hozzon létre egy műveletet az estate.property modellhez.
Indítsa újra a szervert, és látnia kell, hogy a fájl betöltődött a naplóban.
Mezők, attribútumok és nézet¶
Megjegyzés
Célkitűzés: ennek a szakasznak a végére az eladási ár csak olvasható legyen, a hálószobák száma és az elérhetőségi dátum pedig alapértelmezett értékekkel rendelkezzen. Továbbá az eladási ár és az elérhetőségi dátum értékei nem kerülnek másolásra, amikor a rekordot megkettőzik.
A fenntartott active és state mezők hozzáadásra kerülnek az estate.property modellhez.
Eddig csak az általános nézetet használtuk az ingatlanhirdetéseinkhez, de a legtöbb esetben finomhangolni szeretnénk a nézetet. Számos finomhangolási lehetőség van az Odoo-ban, de általában az első lépés annak biztosítása, hogy:
néhány mező alapértelmezett értékkel rendelkezzen
néhány mező csak olvasható
néhány mező nem kerül másolásra a rekord duplikálásakor
Ingatlan üzleti esetünkben a következőket szeretnénk:
Az eladási ár csak olvasható legyen (később automatikusan kitöltésre kerül)
Az elérhetőségi dátum és az eladási ár ne kerüljön másolásra a rekord duplikálásakor
Az alapértelmezett hálószobák száma 2 legyen
Az alapértelmezett elérhetőségi dátum 3 hónap múlva legyen
Néhány új attribútum¶
Mielőtt tovább lépnénk a nézet tervezésével, lépjünk vissza a modell definíciónkhoz. Láttuk, hogy néhány attribútum, mint például a required=True, hatással van az adatbázis táblájának sémájára. Más attribútumok a nézetre lesznek hatással vagy alapértelmezett értékeket biztosítanak.
Exercise
Adjunk hozzá új attribútumokat a mezőkhöz.
Keresse meg a megfelelő attribútumokat (lásd Field) a következőkhöz:
állítsa be az eladási árat csak olvashatóként
akadályozza meg az elérhetőségi dátum és az eladási ár értékek másolását
Indítsa újra a szervert, és frissítse a böngészőt. Nem szabad tudnia beállítani semmilyen eladási árat. Amikor egy rekordot duplikál, az elérhetőségi dátumnak üresnek kell lennie.
Alapértelmezett értékek¶
Bármely mezőhöz megadható alapértelmezett érték. A mező definíciójában adja hozzá az default=X opciót, ahol X lehet egy Python literál érték (boolean, integer, float, string) vagy egy függvény, amely egy modellt vesz át és egy értéket ad vissza:
name = fields.Char(default="Unknown")
last_seen = fields.Datetime("Last Seen", default=fields.Datetime.now)
A name mező alapértelmezés szerint «Unknown» értéket kap, míg a last_seen mező az aktuális időre lesz beállítva.
Exercise
Állítson be alapértelmezett értékeket.
Adja hozzá a megfelelő alapértelmezett attribútumokat, hogy:
a hálószobák alapértelmezett száma 2 legyen
az alapértelmezett elérhetőségi dátum 3 hónap múlva van
Tipp: ez segíthet Önnek: today()
Ellenőrizze, hogy az alapértelmezett értékek a vártnak megfelelően vannak-e beállítva.
Fenntartott mezők¶
Referencia: a témával kapcsolatos dokumentáció megtalálható itt: Fenntartott mezőnevek.
Néhány mezőnév fenntartott az előre meghatározott viselkedésekhez. Ezeket a modelleken kell definiálni, ha a kapcsolódó viselkedés kívánatos.
Exercise
Aktív mező hozzáadása.
Adja hozzá az active mezőt az estate.property modellhez.
Indítsa újra a szervert, hozzon létre egy új ingatlant, majd térjen vissza a lista nézethez… Az ingatlan nem lesz listázva! Az active egy példa egy fenntartott mezőre, amelynek sajátos viselkedése van: amikor egy rekordnak active=False, automatikusan eltávolításra kerül bármilyen keresésből. Az elkészített ingatlan megjelenítéséhez kifejezetten az inaktív rekordokra kell keresnie.
Exercise
Állítson be egy alapértelmezett értéket az active mezőhöz.
Állítsa be a megfelelő alapértelmezett értéket az active mezőhöz, hogy az ne tűnjön el többé.
Vegye figyelembe, hogy az alapértelmezett active=False érték minden meglévő rekordhoz hozzá lett rendelve.
Exercise
Adjon hozzá állapot mezőt.
Add a state field to the estate.property model. Five values are possible: New,
Offer Received, Offer Accepted, Sold and Cancelled. It must be required, should not be copied
and should have its default value set to «New».
Győződjön meg róla, hogy a megfelelő típust használja!
A state mezőt később több felhasználói felület fejlesztéséhez fogjuk használni.
Now that we are able to interact with the UI thanks to the default views, the next step is obvious: we want to define our own views.
- 1
Frissítés szükséges, mivel a web kliens teljesítmény okokból gyorsítótárban tartja a különböző menüket és nézeteket.