6. Desarrollando con Odoo (4). Manejando el Logger y Excepciones

 1. Lanzar excepciones

Para lanzar excepciones hay que:

  1. Agregar las dependencias
  2. Utilizar el bloque try...catch
  3. Lanzar una excepcion RaiseXXXError

Veamos los trozos de código necesarios

from odoo import models, fields, api
from odoo.exceptions import ValidationError
from odoo import _
import datetime

class task(models.Model):
    _name = 'ximoapp01.task'
    --------------
    def _get_code(self):
        for record in self:
            try:
                record.code=record.name + str(record.id)
            except:
                raiseValidationError(_("Error de Ximo..."))
   

Observar tanto en el import como en la última sentencia, la fución subrayado "_"!!

2. Manejando el logger

Existen varios niveles de log: DEBUG, INFO, WARN, ERROR

Para manejar el logger hay que:

  1. Verificar/actualizar en el fichero odoo.conf la configuración del logger  (establecer fichero y niveles de log (variables log_level, log_handler, logfile
  2. Para testing hay que activar el modo desarrollador pero con "activos de prueba", en el caso que queramos mostrar los logs con el nivel "DEBUG"
  3. Importar la dependencia logging en "models.py"
  4. Configurar el logger en "models.py"
  5. Mostar información al logger con logger.debug o logger.info
Veamos el odoo.conf

[options]
addons_path = /mnt/extra-addons
data_dir = /var/lib/odoo

csv_internal_sep = ,

logfile = /var/log/odoo/odoo-server.log
log_handler = :INFO
log_level = info

log_handler puede tomar otros valores como :DEBUG, y log_level indica el nivel mínimo a mostrar, que podríamos poner también a debug (pero solo se vería si tenemos modo desarrollador con activos de prueba.

Veamos los trozos de código necesarios para el fichero "models.py"
 
from odoo import models, fields, api
from odoo.exceptions import ValidationError
from odoo import _
import datetime
import logging

_logger = logging.getLogger(__name__) # Recoge la información del fichero "odoo.conf"

class task(models.Model):
    _name = 'ximoapp01.task'
    --------------
    def _get_code(self):
        for record in self:
            try:
                record.code=record.name + str(record.id)
                _logger.debug("Primer paso a ver si pasa por aquí...")
            except:
                raiseValidationError(_("Error de Ximo..."))

Vemos que hay que importar la dependencia, indicar al logger que fichero utilizar (en este caso el que se indica en la variable "logfile" del fichero "odoo.conf", y mostrar la información deseada utilizando _logger.debug, _logger.info,  _logger.warning o _logger.exception

Comentarios

Entradas populares de este blog

20. Desarrollando con Odoo (15). Permisos y grupos. Crear usuarios de la aplicación. Restringir permisos a usuarios

2. El Modo desarrollador

8. Desarrollando con Odoo (6). Herencia de clase en modelos. Herencia de vistas. Operaciones numeradas en Odoo ??