Jornadas Odoo 2015 - Cómo migrar un módulo OpenERP a la nueva API de Odoo

download Jornadas Odoo 2015 - Cómo migrar un módulo OpenERP a la nueva API de Odoo

If you can't read please download the document

Transcript of Jornadas Odoo 2015 - Cómo migrar un módulo OpenERP a la nueva API de Odoo

  1. 1. Jornadas Odoo 2015 15 de junio de 2015 @PedroMBaeza [email protected] Cmo migrar un mdulo OpenERP a la nueva API de Odoo
  2. 2. Programacin ms sencilla, clara y corta Menos posibilidades de errores (p, ej. propagacin del context) Ms posibilidades con el framework (filtered, sorted, mapped...). Herencia mejorada. onchange y campos calculados ms intuitivos Por qu migrar a la nueva API?
  3. 3. Declaracin de modelos Cambios de la nueva API (I) orm.Model/osv.osv > models.Model orm.TransientModel/osv.osv_memory > models.TransientModel orm.AbstractModel > models.AbstractModel
  4. 4. Declaracin de campos Cambios de la nueva API (II) _columns = { 'field1': fields.boolean('Field 1'), 'field2': fields.integer('Field 2'), } _columns = { 'field1': fields.boolean('Field 1'), 'field2': fields.integer('Field 2'), } field1 = fields.Boolean('Field 1') field2 = fields.Integer('Field 2')
  5. 5. Valores por defecto Cambios de la nueva API (III) field1 = fields.Boolean(..., default=False) field2 = fields.Integer(..., default=2) _defaults = { 'field1': False, 'field2': 2, }
  6. 6. Campos calculados Cambios de la nueva API (IV) field1 = fields.Float('_function', string='Field 1', store=True) @api.depends(...) def _function(self): self.field1 = ... _columns = { 'field1': fields.function(. _function, type='float', string='Field 1', store={...}), } def get_store_ids(cr, uid, ): ... return {}
  7. 7. Campos related Cambios de la nueva API (V) field1 = fields.Float(. related='campo_x2x.campo_destino', string='Field 1') _columns = { 'field1': fields.related(. 'campo_x2x', 'campo_destino', string='Field 1', type='float'), }
  8. 8. Campos property Cambios de la nueva API (VI) field1 = fields.Float(. company_dependent=True, string='Field 1') _columns = { 'field1': fields.property(. string='Field 1', type='float'), }
  9. 9. Mtodos Cambios de la nueva API (VII) def write(self, cr, uid, ids, vals, context): def create(self, cr, uid, vals, context): @api.multi def write(self, vals): @api.model def create(self, vals):
  10. 10. onchange Cambios de la nueva API (VIII) @api.multi @api.onchange('fieldx') def onchange_fieldx(self): self.field1 = x def onchange_fieldx(self, cr, uid, ids, context): res = {} res['value'] = {'field1': x} return res
  11. 11. env Cambios de la nueva API (IX) def method(self): self.sudo().method2() self.with_context(x=23).method3() def method(self, cr, uid, ids, context=None): self.method2(cr, . . . SUPERUSER_ID, ids, context) context['x'] = 23 self.method3(cr, uid, ids, context)
  12. 12. Vistas Cambios de la nueva API (X) Sin cambios
  13. 13. MIGRACIN EN VIVO