Odoo-moduulien perusteet: harjoitustehtävä


Odoo moduulien tarkoitus on lisätä ominaisuuksia tai muuttaa Odoon käyttäytymistä. Se koostuu mm. malleista(model), näkymistä(view), käyttöoikeuksista(access rights) ja ohjamista(controller, huom. huono suomennos). Moduulit voivat joko luoda täysin uusia malleja, näkymiä ja ohjaimia tai periä jo olemassa olevia muokaten niiden käyttäytymistä tai toimintoja. 

Oman moduulin luominen 

Luomme harjoituksen vuoksi uuden moduulin joka lisää henkilötietoihin(myöhemmin partner 🤠) kyseisen henkilön (tai yrityksen) lempijuoman. Esimerkki kuulostaa hassulta mutta myötäilee todellisen maailman töitä, joissa kenttä voisi olla esimerkiksi henkilötunnus tai lemmikkien lukumäärä. Ne olisivat kuitenkin paljon kuivempia esimerkkejä (pun intended). 

Moduulimme tulee olemaan hieman samankaltainen kuin https://github.com/OCA/partner-contact/tree/18.0/partner_firstname 

res_partner_favorite_drink 

 

Luo ensimmäiseksi kansio moduulille. Sen on oltava addons kansion alla. Anna sille nimeksi res_partner_favorite_drink. 

 

__manifest__.py 

Manifestitiedosto kertoo metadataa moduulistamme , kuten nimen, kategorian, version ja niin edelleen. Tässä harjoituksessa lisäämme vain välttämättömät kentät.  

    "name": "Partner favorite drink", 

    "version": "18.0.1.0.0", 

    "depends": ["contacts"], 

    "application": False, 

    "installable": True, 

    "data": [ 

    ], 

 

Nimi on moduulin nimi vapaammin kuin kansion nimenä. Versio on ensin Odoon versio, 18.0 jonka jälkeen meidän moduulimme versio 1.0.0. Odoon version on täsmättävä siihen odoon versioon jota ajat juuri nyt. 

 

Depends kohta kertoo, että meidän moduulimme riippuu toisesta moduulista. Tässä tapauksessa Contacts moduulista joka lisää valikkoon “Contacts” kentän josta näemme partnerien tiedot. 

 

models/res_partner.py 

Seuraavaksi luomme Python tiedoston joka sisältää uuden kenttämme. Se on nimetty mallin nimell (res.parter/res_partner) jota haluamme muokata. Siellä perimme nykyisen res.partner mallin joka sisältää jo olemassaolevat kentät kuten nimi jne.  Tässä ensin koodi, sitten selitys. 

from odoo import fields, models 

  

class Partner(models.Model): 

    _inherit = "res.partner" 

  

    favorite_food = fields.Char(string="Favorite food") 

 

Ensimmäisellä rivillä importtaamme odoon fields ja models moduulit. 

https://www.cybrosys.com/blog/fields-and-parameters-in-odoo  

https://www.cybrosys.com/odoo/odoo-books/odoo-15-development/ch3/adding-models/ 

 

Class Partner(models.Model): rivillä on pythonin luokka joka perii odoon models.Model luokan. https://docs.python.org/3/tutorial/classes.html.  

 

_inherit = “res.partner” rivillä kerromme odoolle minkä mallin luokka perii. Koska aikaisemmalla rivillä python luokka perii vain models.Model luokan. 

 

Ja rivillä favorite_drink = fields.Char(string="Favorite drink")pääsemme vihdoin asiaan. Luomme luokalle favorite_food muuttujan ja teemme siitä Char (teksti) tyyppisen. String= parametri kertoo Odoolle minkä tekstin se näyttää kun kenttä näyteään viewissä. Tällä tavalla määritelty muuttuja tallennettaan tietokantaan res.partner (tietokanta)mallin alle. Jos olisimme kirjoittaneet vain favorite_drink = “Vaapukkamehu” on tämä tieto käytettävissä vain tämän python luokan sisällä. 

 

__init__.py 

 

Jotta odoo näkee mallisi on kahden __init__.py tiedoston oltava olemassa. (https://docs.python.org/3/tutorial/modules.html) Ensimmäinen niistä on __init__.py joka sijaitsee moduulisi juurihakemistossa. Sen sisältö on seuraava: 

 

from . import models 

.(piste) viittaa siihen kansioon jossa tiedosto on. Models viittaa kansioon, sinnekkin tarvitaan samantyylinen tiedosto. 

models/__init__.py 

Toinen niistä sijaitsee models kansionssa, ja sen sisältö on seuraava: 

 

from . import res_partner 

 

.(piste) viittaa siihen kansioon jossa tiedosto on. Res_partner viittaa tiedostoon res_partner.py. 

views/res_partner.xml 

Jotta käyttäjät pääsevät näkemään partnerien lempijuomat on kenttä lisättävät näkymälle. (https://www.odoo.com/documentation/18.0/developer/reference/user_interface/view_records.html) 

 Luo tiedosto views/res_partner.xml ja lisää sinne seuraava sisältö: 

 

<?xml version="1.0" encoding="utf-8" ?> 

<odoo> 

<record id="favorite_drink_from" model="ir.ui.view"> 

    <field name="name">favorite.drink.form</field> 

    <field name="model">res.partner</field> 

   <field name="inherit_id" ref="base.view_partner_form" /> 

    <field name="arch" type="xml"> 

         <field name="title" position="after"> 

             <field name="favorite_drink" /> 

          </field 

    </field> 

  </record> 

</odoo> 

 

Tärkeimmät kohdat ovar. 

  • Record id 
  • Määrittää meidän näkymämme id:n, tämä on oltava eri jokaisella moduulin näkymällä 
  • Field name=”name” 
  • Näkymän nimi, tämä on yleensä sama kuin id mutta alaviivat muutettuna pisteiksi 
  • Field name=”model” 
  • Malli jota näkymä käyttää, eli mistä se hakee kenttien arvot joita haluamme näyttää 
  • Field name=”inherit_id” 
  • Näkymä joka peritään 
  • Field name=”arch” 
  • Sisältää kentät jotka haluamme näyttää ja niiden sijainnit 

Field name=”arch” tagien sisällä on ensin field name=”title” position=”after”, tämä tarkoittaa että tagin sisältö (tässä tapauksessa <field name=”favorite_drink” />) sijoitetaan title kentän jälkeen. Title kenttä on tässä tapauksessa näkymässä base.view_partner_form jonka perimme. 

Huomio, tärkeää debug asiaa! 

Pääset katsomaan näkymää jonka perimme näin. Mene valikosta “Contacts”, valitse joku kontakteista. Kirjoita osoiteriville urlin perään &debug=1, eli jos osoite on alunperin esimerkiksi: 

http://127.0.0.1:8069/web#id=26&cids=1&menu_id=98&action=134&model=res.partner&view_type=form 

Kirjoita: 

http://127.0.0.1:8069/web#id=26&cids=1&menu_id=98&action=134&model=res.partner&view_type=form&debug=1 

Lisättyäsi debug arvon urliin tulee oikeaan yläkulmaan käyttäjänimen vasemmalle puolelle pieni ötökkäikoni. Paina sitä ja valitse “Edit view: Form”. 

 

Voit varmistaa että “favorite_drink” kenttä on tullut mallille models/res_partner.py tiedostosta avaamalla kontaktin forminäkymässä (perusnäkymä). Valitse sitten debug valikosta (ötökkäikoni) “View fields” ja hae “favorite_drink”. 

 

Oman moduulin asentaminen 

Varmista että moduulisi on addons kansiossa. Varmista että __manifest__.py ja molemmat __init__.py tiedostot ovat olemassa ja importtaavat oikeat asiat. 

 

Käynnistä odoo ja mene valikosta kohtaan “Apps”. Hae “res_partner_favorite_drink”. Moduulisi pitäisi tulla näkyviin. Paina “Acitvate” nappia. 

 

Voit myös asentaa moduulin odoon käynnistyksen yhteydessä ajamalla: 

./odoo-bin –c odoo.conf –i res_partner_favorite_drink 

 

Tai päivittää moduulin ajamalla: 

./odoo-bin –c odoo.conf –u res_partner_favorite_drink 

 

Mahdolliset virheilmoitukset näkyvät terminaalissa. 

Luokitus
0 0

Ei kommentteja tällä hetkellä.

olla ensimmäinen, joka jättää kommentin.