Odoo

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

A partir de la versió 8, OpenERP passa a anomenar-se Odoo.

Les novetats que ens interessen més són la possibilitat de crear una web per als clients i les noves funcions de l'API.

Instal·lar Odoo

El servidor Odoo

El servidor Odoo s'arranca simplement amb el comandament:

$ odoo.py

Tal vegada es necessita ficar la ruta on està instal·lat.

Pot ser que estiga configurat el servici en l'arranc del sistema operatiu. No obstant, si volem depurar, cal parar el servici i arrancar de manera manual.

En el cas d'un Odoo instal·lat en Debian amb els paquets, si fer un ps -aux, vorem que el comandament que té Odoo és:

/usr/bin/python /usr/bin/odoo.py --config /etc/odoo/openerp-server.conf --logfile /var/log/odoo/odoo-server.log

Per reiniciar-lo de manera manual:

$ sudo systemctl restart odoo

El servici Odoo proporciona accés als clients via RPC, Odoo proporciona per defecte un client web.

Els mòduls

Tant el servidor com els clients són mòduls. Tots estàn guardats en una base de dades. Tot els que es puga fer per modificar Odoo es fa en mòduls.

Composició d'un mòdul

Els mòduls d'Odoo amplien o modifiquen parts de Model-Vista-Controlador. D'aquesta manera, un mòdul pot tindre:

  • Objectes de negoci: Són la part del model, estan definits en classes de Python segons una sintaxy pròpia de l'ORM d'Odoo.
  • Fitxers de dades: Són fitxers XML que poden definir dades, vistes o configuracions.
  • Controladors web: Gestionen les peticions dels navegadors web.
  • Dades estàtiques: Imatges, CSS, o javascript utilitzats per l'interficie web.

Estructura de fitxers d'un mòdul

Tots el mòduls estan en un directori definit en l'opció --addons-path o el fitxer de configuració. Poden ser més d'un directori.

Un mòdul de python es declara en un fitxer de manifest que dona informació sobre el mòdul, el que fa el mòduls dels que depen i cóm s'ha d'instal·lar o actualitzar. [1]

Un mòdul es un paquet de Python que necessita un __init__.py per a instanciar tots els fitxers python.

Creació de mòduls

Per ajudar al programador, Odoo conté un comandament per crear mòduls buits. Aquest crea l'estructura de fitxers necessaria per començar a treballar:

$ odoo.py scaffold <module name> <where to put it> 


ORM

Odoo mapeja els seus objectes en una base de dades amb ORM, evitant la majoria de consultes SQL. D'aquesta manera el desenvolupament dels mòduls és molt ràpid i evitem errades de programació.

Els models són creats com classes de python que extenen la classe model que conté els camps i mètodes útils per a fer anar l'ORM.

Els models, al heretat de model, necessiten donar valor a algunes variables, com ara _name

És en aquest punt on més diferència trobem amb OpenERP 7, per tant, cal tindre cura de no fer cas totalment de tutorials o ajuda per al 7

Odoo considera que un model és la referència a una o més taules en la base de dades. Un model no és una fila en la taula, és tota la taula.

Fields

Les "columnes" del model són els fields. Estos poden ser de dades normals com Integer, boolean, date, char... o especials como many2one, one2many, related...

Hi ha uns fields reservats:

  • id (Id) the unique identifier for a record in its model
  • create_date (Datetime) creation date of the record
  • create_uid (Many2one) user who created the record
  • write_date (Datetime) last modification date of the record
  • write_uid (Many2one) user who last modified the record

Els fields es declaren amb un constructor:

from openerp import models, fields

class LessMinimalModel(models.Model):
    _name = 'test.model2'

    name = fields.Char()

Tenen uns atributs comuns:

  • string (unicode, default: field's name) The label of the field in UI (visible by users).
  • required (bool, default: False) If True, the field can not be empty, it must either have a default value or always be given a value when creating a record.
  • help (unicode, default: ) Long-form, provides a help tooltip to users in the UI.
  • index (bool, default: False) Requests that Odoo create a database index on the column

I algunes, sobretot les especials, tenen atributs particulars.

Enllaços

https://www.odoo.com/documentation/8.0/

https://www.odoo.com/documentation/8.0/howtos/backend.html