Publicidad

miércoles, 4 de marzo de 2015

Definicion de Clases Api Odoo

API Odoo



    Como todos sabemos Odoo anteriormente OpenERP, ah modificado su Núcleo de desarrollo, ofreciendo nuevas alternativas para la creación de Módulos para este ERP, ahora trae a nosotros los modulos Website, que permiten integrar una e-shop, un sitio web, añadir temas, chat de contacto, etc.
Podemos observar también modificaciones al Framework de Desarrollo de Módulos, una nueva Api que cambia el Aspecto del desarrollo, pero que es compatible con el Framework de la versión 7 de OpenERP,  mis proximas entradas seran con aspectos importantes de esta nueva Version.

Definición de Clases con la nueva API (Odoo)

Para la creación de una clase con la Api de Odoo se utiliza el código siguiente:

from openerp.osv import fields, osv
from datetime import datetime
import time


class mi_clase_odoo(osv.osv):
    _name = 'mi.clase.odoo'
    #Definicion de Campos
    name = fields.Char('Nombre del Alumno', required=True)
    date_act = fields.Date('Fecha')
    _defaults = {  
        'date_act': lambda *a: time.strftime('%Y-%m-%d'),  
        }
mi_clase_odoo()

En OpenERP 7 se crearía con el código:


from openerp.osv import fields, osv
from datetime import datetime
import time


class mi_clase_odoo(osv.osv):
    _name = 'mi.clase.odoo'
    #Definicion de Campos
    _description = 'Grupos'
    _columns = {
        'name':fields.char('Nombre', size=64), 
        'date_act': fields.date('Fecha'),
    }
    _defaults = {  
        'date_act': lambda *a: time.strftime('%Y-%m-%d'),  
        }
mi_clase_odoo()

Ambas formas son Validas en el desarrollo para Odoo, ya que tiene retrocompatibilidad con la definición de clases osv.osv.

Diferencias Odoo y OpenERP7:
  • La primer diferencia es la importación de las librerías, ahora importamos api y no osv.
  • Al definir la clase heredamos models.Model y en OpenERP osv.osv.
  • Para definir un campo en Odoo, ya no es necesario ingresarlo en un diccionario, ahora se define directamente, primer elemento nombre del campo y seguido del tipo de campo a definir, en OpenERP7 utilizamos el _columns{}.
  • Definir campos por defecto se utiliza de la misma manera.
Este es mi primer Aporte sobre la Api de Odoo, espero que sea de su agrado.

6 comentarios:

  1. Muy buena aportación de introducción del API de Odoo, espero tus nuevas publicaciones respecto a los cambios entre las versiones, sobre todo, como hacer compatibles algunos módulos de Openerp a Odoo, que aspectos debemos revisar para poder hacer esta actualización de módulos. Saludos.

    ResponderEliminar
  2. Al momento de crear un nuevo modulo y generar el ejecutable me sale este error ImportError: No module named osv

    ResponderEliminar
    Respuestas
    1. Que tal revisa que este definido esto en la cabecera principal:

      from openerp.osv import fields, osv

      Eliminar