Chapter 6: Basic Views¶
We have seen in the previous chapter that Odoo is able to generate default views for a given model. In practice, the default view is never acceptable for a business application. Instead, we should at least organize the various fields in a logical manner.
A nézetek XML fájlokban vannak meghatározva, akciókkal és menükkel. Ezek az ir.ui.view modell példányai.
Az ingatlan modulunkban logikus módon kell elrendezni a mezőket:
in the list view, we want to display more than just the name.
az űrlap nézetben a mezőket csoportosítani kell.
a keresési nézetben több szempont alapján kell tudnunk keresni, mint csupán a név. Különösen szeretnénk egy szűrőt az «Elérhető» ingatlanokra, és egy gyorsgombot az irányítószám szerinti csoportosításhoz.
Lista¶
Referencia: a témával kapcsolatos dokumentáció megtalálható a Lista.
Megjegyzés
Cél: a szakasz végére a lista nézetnek így kell kinéznie:
List views, also called list views, display records in a tabular form.
Their root element is <list>. The most basic version of this view simply
lists all the fields to display in the table (where each field is a column):
<list string="Tests">
<field name="name"/>
<field name="last_seen"/>
</list>
A simple example can be found here.
Exercise
Adjon hozzá egy egyedi lista nézetet.
Határozzon meg egy lista nézetet az estate.property modellhez a megfelelő XML fájlban. Ellenőrizze ennek a szakasznak a Célját a megjelenítendő mezőkért.
Tippek:
do not add the
editable="bottom"attribute that you can find in the example above. We’ll come back to it later.néhány mező címkéjét szükség lehet a referenciához igazítani.
Mint mindig, újra kell indítania a szervert (ne felejtse el a -u opciót) és frissítenie kell a böngészőt az eredmény megtekintéséhez.
Figyelem
Valószínűleg használni fog némi másolást-beillesztést ebben a fejezetben, ezért mindig győződjön meg arról, hogy az id egyedi marad minden nézethez!
Figyelem
Remember to set the correct access rights to the user as explained in the security intro!
The Create button is not shown if the user has only read permission.
Űrlap¶
Referencia: a témához kapcsolódó dokumentáció megtalálható a Űrlap.
Megjegyzés
Cél: a szakasz végén a form nézetnek így kell kinéznie:
Az űrlapokat egyedi rekordok létrehozására és szerkesztésére használják.
Gyökérelemük a <form>. Magas szintű szerkezeti elemekből (csoportok és jegyzetfüzetek) és interaktív elemekből (gombok és mezők) állnak:
<form string="Test">
<sheet>
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="last_seen"/>
</group>
</group>
<notebook>
<page string="Description">
<field name="description"/>
</page>
</notebook>
</sheet>
</form>
Lehetőség van szokásos HTML címkék, mint például a div és h1, valamint a class attribútum használatára (az Odoo néhány beépített osztályt biztosít) a megjelenés finomhangolásához.
Egy egyszerű példa található itt.
Exercise
Adjon hozzá egy egyedi űrlap nézetet.
Határozzon meg egy űrlap nézetet az estate.property modellhez a megfelelő XML fájlban. Ellenőrizze ennek a szakasznak a Célkitűzés részét az oldal várható végső kialakításához.
Ez némi próbálkozást és hibázást igényelhet, mielőtt elérné a kívánt eredményt ;-) Javasolt, hogy egyszerre csak egy mezőt és címkét adjon hozzá, hogy jobban megértse, hogyan működik.
Annak érdekében, hogy elkerülje a szerver újraindítását minden alkalommal, amikor módosítást végez a nézeten, kényelmes lehet a szerver indításakor a --dev xml paraméter használata:
$ ./odoo-bin --addons-path=addons,../enterprise/,../tutorials/ -d rd-demo -u estate --dev xml
Ez a paraméter lehetővé teszi, hogy csak frissítse az oldalt a nézet módosításainak megtekintéséhez.
Keresés¶
Referencia: a témával kapcsolatos dokumentáció megtalálható a Keresés hivatkozás alatt.
Megjegyzés
Cél: ennek a szakasznak a végére a keresési nézetnek így kell kinéznie:
A keresési nézetek kissé eltérnek a lista- és űrlapnézetektől, mivel nem jelenítenek meg tartalmat. Bár egy adott modellre vonatkoznak, más nézetek tartalmának szűrésére használják őket (általában összesített nézetek, mint például Lista). Az eltérő felhasználási eseteken túl ugyanúgy vannak definiálva.
Gyökérelemük a <search>. A nézet legegyszerűbb változata egyszerűen felsorolja az összes mezőt, amelyhez parancsikon kívánatos:
<search string="Tests">
<field name="name"/>
<field name="last_seen"/>
</search>
Az Odoo által generált alapértelmezett keresési nézet parancsikont biztosít a name szerinti szűréshez. Nagyon gyakori, hogy a felhasználó által valószínűleg szűrni kívánt mezőket hozzáadjuk egy testreszabott keresési nézethez.
Exercise
Adjon hozzá egy egyedi keresési nézetet.
Határozzon meg egy keresési nézetet az estate.property modellhez a megfelelő XML fájlban. Ellenőrizze ennek a szakasznak az első képét a Cél részben a mezők listájáért.
A szerver újraindítása után lehetőségnek kell lennie a megadott mezők szerinti szűrésre.
A Keresés nézetek tartalmazhatnak <filter> elemeket is, amelyek előre definiált keresések kapcsolóiként működnek. A szűrőknek az alábbi attribútumok egyikével kell rendelkezniük:
domain: hozzáadja a megadott domaint az aktuális kereséshezcontext: hozzáad némi kontextust az aktuális kereséshez; agroup_bykulcsot használja az eredmények csoportosítására a megadott mezőnév alapján
Egy egyszerű példa található itt.
Mielőtt tovább mennénk a gyakorlatban, szükséges bevezetni a «domain» fogalmát.
Domainek¶
Referencia: a témához kapcsolódó dokumentáció megtalálható a Keresési tartományok.
Az Odoo-ban a domain feltételeket kódol a rekordokra: a domain egy kritériumlista, amelyet egy modell rekordjainak részhalmazának kiválasztására használnak. Minden kritérium egy hármas, amely tartalmaz egy mezőnevet, egy operátort és egy értéket. Egy rekord akkor elégíti ki a kritériumot, ha a megadott mező megfelel az operátor által az értékre alkalmazott feltételnek.
Például, amikor a Termék modellen használjuk, a következő domain kiválasztja az összes szolgáltatást, amelynek egységára nagyobb, mint 1000:
[('product_type', '=', 'service'), ('unit_price', '>', 1000)]
Alapértelmezés szerint a kritériumok implicit ÉS-sel vannak kombinálva, ami azt jelenti, hogy minden kritériumnak teljesülnie kell ahhoz, hogy egy rekord megfeleljen egy domainnek. A logikai operátorok & (ÉS), | (VAGY) és ! (NEM) használhatók a kritériumok explicit kombinálására. Ezeket előtagként használják (az operátor az argumentumai előtt van, nem közöttük). Például, hogy kiválasszuk azokat a termékeket, «amelyek szolgáltatások VAGY egységáruk NEM esik 1000 és 2000 közé»:
['|',
('product_type', '=', 'service'),
'!', '&',
('unit_price', '>=', 1000),
('unit_price', '<', 2000)]
Megjegyzés
Az XML nem engedélyezi a < és & használatát XML elemekben. A feldolgozási hibák elkerülése érdekében entitás hivatkozásokat kell használni: < a < és & a & helyett. Más entitás hivatkozások (>, ' & ") opcionálisak.
Example
<filter name="negative" domain="[('test_val', '<', 0)]"/>
Exercise
Szűrő és Csoportosítás hozzáadása.
A következőket kell hozzáadni a korábban létrehozott keresési nézethez:
egy szűrő, amely megjeleníti az elérhető ingatlanokat, azaz az állapotnak «Új» vagy «Ajánlat érkezett» kell lennie.
az eredmények irányítószám szerinti csoportosításának képessége.
Looking good? At this point we are already able to create models and design a user interface which makes sense business-wise. However, a key component is still missing: the link between models.