SlideShare a Scribd company logo
1 of 15
Download to read offline
Agile Business Group - www.agilebg.com - info@agilebg.com
API V8 for Dummies
Guida rapida per apprendisti programmatori di Odoo V8
Nicola Malcontenti
Agile Business Group
Agile Business Group - www.agilebg.com - info@agilebg.com
Agile Business Group & Odoo V8
 Swiss Localisation - Bank Payment File (DTA)
 Italian Localisation - VAT Registries
 Account Move Template
 VAT on payment
Agile Business Group - www.agilebg.com - info@agilebg.com
Obbiettivi delle nuove API
 Maggior facilitàdi scritturaeletturadel codice
Python
 Creazione di un modulo più python-oriented:
●
I felds diventano dei descrittori delle classi
●
Programmazione più object oriented
Per agevolare il portingdei vari moduli le api V7 e V8
sono totalmente compatibili
Agile Business Group - www.agilebg.com - info@agilebg.com
Record e RecordSet
 Rimpiazzai concetti di browse_recorde
browse_record_list
 Un RecordSet è una collection
 RecordSet sono le istanze di ogni classe
 Un Record è un RecordSet!
Agile Business Group - www.agilebg.com - info@agilebg.com
Record e RecordSet
 si puòaccederee modifcarei felddel recordin
maniera diretta:
 I metodi del modulopossonoessereinvocati
direttamente su di un RecordSet
partner.name = “My_Partner”
print partner.name
My_Partner
#Chiamata di metodo
def my_fun(self):
…
some stuff
…
def other_stuff(self):
self.my_fun()
Agile Business Group - www.agilebg.com - info@agilebg.com
Enviroment
 NO MORE (cr,uid,ids,...,context)
 env è parte del RecordSet
 Chiamate di metodo più rapide:
self.search([('is_company', '=', True)])
res.partner(7, 18, 12, 14, 17, 19, 8, 31, 26, 16)
self.search([('is_company', '=', True)], limit=1).name
'My_Partner'
#accesso a env
self.env
cursor = self._cr
self.env.cr
self.env.user
self.env['res.partner'].with_context(tz=x).create(vals)
Agile Business Group - www.agilebg.com - info@agilebg.com
Modulo Presentation Talk
Fields and Methods
Agile Business Group - www.agilebg.com - info@agilebg.com
Fields
 Fields come descriptors
della classe
 Proprietà Date e Datetime:
●
to_string

to_string in datetime
●
from_string

from_string in datetime
●
today

now in datetime
●
context_today

context_timestamp in datetime
name = fields.Char(string='Name')
description = fields.Text(
'Description')
user_id = fields.Many2one(
'res.partner',
string='Supervisor')
partner_id = fields.Many2Many(
'res.partner',
string='Subscribers')
buffet = fields.Boolean('Buffet')
prize = fields.Float(
string='Ticket Prize')
state = fields.Selection([
('draft', 'Draft'),
('paid', 'Paid'),
('cancel', 'Cancelled')])
date = fields.Date(string='Date')
Agile Business Group - www.agilebg.com - info@agilebg.com
Functional Fields
 felds.functionNO
MORE!
 storelimitatoaTruee
Falseeadundecorator
dedicato sul metodo
amount_total = fields.Float(
string='Subtotal',
store=True,
readonly=True,
compute='_compute_amount')
@api.one
@api.depends('buffet', 'projector', 'prize')
def _compute_amount(self):
if self.buffet:
self.amount_total = self.prize + 4
if self.projector:
self.amount_total = self.prize + 10
Agile Business Group - www.agilebg.com - info@agilebg.com
Method and Decorators
 I Decorator sonola“frma”cheidentifca il tipodi
metodo
 @api.one: il decorator ciclasui recorddel recordset,
self è un record
 @api.multi: selfèil RecordSetcorrentesenza
iterazioni
 @api.model: self gli viene passato dall'esterno
Agile Business Group - www.agilebg.com - info@agilebg.com
Method and Decorators
@api.multi
def pay_amount(self):
for talk in self:
talk.state = 'paid'
@api.one
def check_availability(self):
total = self.daily_total(fields.Date.today())
if total <= self.env.user.company_id.total_daily:
self.avaible = True
else:
self.avaible = False
@api.model
def daily_total(self, today):
daily_total = 0
for talk in self:
if talk.date.to_string == today:
daily_total += talk.amount_total
return daily_total
Agile Business Group - www.agilebg.com - info@agilebg.com
Method and Decorators
 @api.onchange: nonsi dichiaranopiùgli onchange
nelleviste, bastausarequestodecorator sopraad
un modulo
 @api.returns:questodecoratorgarantisce
l'univocità del recordset ritornato dal metodo.
@api.onchange('fieldx'):
def do_stuff(self):
if self.fieldx == x:
self.fieldy = 'toto'
@api.returns('res.partner')
def afun(self):
...
return x # a RecordSet
Agile Business Group - www.agilebg.com - info@agilebg.com
Link Utili
 https://www.odoo.com/documentation/8.0/
 https://github.com/nbessi/odoo_new_api_guideli
ne
 http://www.slideshare.net/openobject/odoo-from
-v7-to-v8-the-new-api
Agile Business Group - www.agilebg.com - info@agilebg.com
Contatti:
 nicola.malcontenti@agilebg.com
 Twitter: twitter.com/Hurrinico
 GitHub: github.com/hurrinico
Agile Business Group - www.agilebg.com - info@agilebg.com
Grazie per l'attenzione!

More Related Content

Viewers also liked

Viewers also liked (13)

OpenERP 7.0 - Sviluppo Moduli
OpenERP 7.0 - Sviluppo ModuliOpenERP 7.0 - Sviluppo Moduli
OpenERP 7.0 - Sviluppo Moduli
 
08 Fatturazione Elettronica P.A. con Odoo
08 Fatturazione Elettronica P.A. con Odoo08 Fatturazione Elettronica P.A. con Odoo
08 Fatturazione Elettronica P.A. con Odoo
 
15 Odoo come sistema di ticketing ed helpdesk avanzato​
15 Odoo come sistema di ticketing ed helpdesk avanzato​15 Odoo come sistema di ticketing ed helpdesk avanzato​
15 Odoo come sistema di ticketing ed helpdesk avanzato​
 
201607 03 - odoo 8.0
201607 03 - odoo 8.0201607 03 - odoo 8.0
201607 03 - odoo 8.0
 
OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!
 
07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva
07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva
07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva
 
02 Ritenuta d'acconto
02 Ritenuta d'acconto02 Ritenuta d'acconto
02 Ritenuta d'acconto
 
Le licenze software ed affini
Le licenze software ed affiniLe licenze software ed affini
Le licenze software ed affini
 
06 Odoo Community Association
06 Odoo Community Association06 Odoo Community Association
06 Odoo Community Association
 
04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda
04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda
04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda
 
14 Il borsino: un nuovo modo di gestire il flusso di acquisto
14 Il borsino: un nuovo modo di gestire il flusso di acquisto14 Il borsino: un nuovo modo di gestire il flusso di acquisto
14 Il borsino: un nuovo modo di gestire il flusso di acquisto
 
Gestione Magazzino con Odoo
Gestione Magazzino con OdooGestione Magazzino con Odoo
Gestione Magazzino con Odoo
 
XML-RPC vs Psycopg2
XML-RPC vs Psycopg2XML-RPC vs Psycopg2
XML-RPC vs Psycopg2
 

Similar to 09 API V8 for Dummies

#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2Bkino2k
 
Cerved - The Italian Business Graph: a Story of Tech & data-driven Innovation
Cerved - The Italian Business Graph: a Story of Tech & data-driven InnovationCerved - The Italian Business Graph: a Story of Tech & data-driven Innovation
Cerved - The Italian Business Graph: a Story of Tech & data-driven InnovationNeo4j
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuerySandro Marcon
 
Automatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource ManagerAutomatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource ManagerVito Flavio Lorusso
 
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Alberto Pasca
 
I Graph Database: analisi del comportamento degli utenti
I Graph Database: analisi del comportamento degli utentiI Graph Database: analisi del comportamento degli utenti
I Graph Database: analisi del comportamento degli utentiThinkOpen
 
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Codemotion
 
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Federico Feroldi
 
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Codemotion
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal WebtrendsStefano Iaboni
 
Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applicationsmarcocasario
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataVincenzo Manzoni
 
Marketing ed ufficio stampa
Marketing ed ufficio stampaMarketing ed ufficio stampa
Marketing ed ufficio stampaAlcor Sistemi
 
Acadevmy - GraphQL & Angular: Tutto il REST è noia!
Acadevmy - GraphQL & Angular: Tutto il REST è noia!Acadevmy - GraphQL & Angular: Tutto il REST è noia!
Acadevmy - GraphQL & Angular: Tutto il REST è noia!Francesco Sciuti
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSAndrea Saltarello
 
20140311 app dev series - 01 - introduction - italian
20140311   app dev series - 01 - introduction - italian20140311   app dev series - 01 - introduction - italian
20140311 app dev series - 01 - introduction - italianMongoDB
 

Similar to 09 API V8 for Dummies (20)

#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
 
Cerved - The Italian Business Graph: a Story of Tech & data-driven Innovation
Cerved - The Italian Business Graph: a Story of Tech & data-driven InnovationCerved - The Italian Business Graph: a Story of Tech & data-driven Innovation
Cerved - The Italian Business Graph: a Story of Tech & data-driven Innovation
 
Dynamics NAV Concetti Base
Dynamics NAV Concetti BaseDynamics NAV Concetti Base
Dynamics NAV Concetti Base
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
Automatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource ManagerAutomatizzare tutto con Azure Resource Manager
Automatizzare tutto con Azure Resource Manager
 
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
 
I Graph Database: analisi del comportamento degli utenti
I Graph Database: analisi del comportamento degli utentiI Graph Database: analisi del comportamento degli utenti
I Graph Database: analisi del comportamento degli utenti
 
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
 
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
 
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal Webtrends
 
Wcmil2018
Wcmil2018Wcmil2018
Wcmil2018
 
Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applications
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
 
Marketing ed ufficio stampa
Marketing ed ufficio stampaMarketing ed ufficio stampa
Marketing ed ufficio stampa
 
Acadevmy - GraphQL & Angular: Tutto il REST è noia!
Acadevmy - GraphQL & Angular: Tutto il REST è noia!Acadevmy - GraphQL & Angular: Tutto il REST è noia!
Acadevmy - GraphQL & Angular: Tutto il REST è noia!
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
 
20140311 app dev series - 01 - introduction - italian
20140311   app dev series - 01 - introduction - italian20140311   app dev series - 01 - introduction - italian
20140311 app dev series - 01 - introduction - italian
 
14 faq400
14 faq40014 faq400
14 faq400
 

More from Associazione Odoo Italia (11)

10 Gestione Cespiti​
10 Gestione Cespiti​10 Gestione Cespiti​
10 Gestione Cespiti​
 
Reports e stampe con OpenERP
Reports e stampe con OpenERPReports e stampe con OpenERP
Reports e stampe con OpenERP
 
Import/Export di dati con OpenERP
Import/Export di dati con OpenERPImport/Export di dati con OpenERP
Import/Export di dati con OpenERP
 
Causali e Compensazioni Easy Way
Causali e Compensazioni Easy WayCausali e Compensazioni Easy Way
Causali e Compensazioni Easy Way
 
Sviluppare moduli per il client web
Sviluppare moduli per il client webSviluppare moduli per il client web
Sviluppare moduli per il client web
 
Distinta base a dimensioni variabili
Distinta base a dimensioni variabiliDistinta base a dimensioni variabili
Distinta base a dimensioni variabili
 
OpenERP Community Association
OpenERP Community AssociationOpenERP Community Association
OpenERP Community Association
 
OpenERP in Italia - tipico caso d'uso
OpenERP in Italia - tipico caso d'usoOpenERP in Italia - tipico caso d'uso
OpenERP in Italia - tipico caso d'uso
 
Launchpad e code review
Launchpad e code reviewLaunchpad e code review
Launchpad e code review
 
Contbilità: le novità
Contbilità: le novitàContbilità: le novità
Contbilità: le novità
 
Open erp vs sap
Open erp vs sapOpen erp vs sap
Open erp vs sap
 

09 API V8 for Dummies

  • 1. Agile Business Group - www.agilebg.com - info@agilebg.com API V8 for Dummies Guida rapida per apprendisti programmatori di Odoo V8 Nicola Malcontenti Agile Business Group
  • 2. Agile Business Group - www.agilebg.com - info@agilebg.com Agile Business Group & Odoo V8  Swiss Localisation - Bank Payment File (DTA)  Italian Localisation - VAT Registries  Account Move Template  VAT on payment
  • 3. Agile Business Group - www.agilebg.com - info@agilebg.com Obbiettivi delle nuove API  Maggior facilitàdi scritturaeletturadel codice Python  Creazione di un modulo più python-oriented: ● I felds diventano dei descrittori delle classi ● Programmazione più object oriented Per agevolare il portingdei vari moduli le api V7 e V8 sono totalmente compatibili
  • 4. Agile Business Group - www.agilebg.com - info@agilebg.com Record e RecordSet  Rimpiazzai concetti di browse_recorde browse_record_list  Un RecordSet è una collection  RecordSet sono le istanze di ogni classe  Un Record è un RecordSet!
  • 5. Agile Business Group - www.agilebg.com - info@agilebg.com Record e RecordSet  si puòaccederee modifcarei felddel recordin maniera diretta:  I metodi del modulopossonoessereinvocati direttamente su di un RecordSet partner.name = “My_Partner” print partner.name My_Partner #Chiamata di metodo def my_fun(self): … some stuff … def other_stuff(self): self.my_fun()
  • 6. Agile Business Group - www.agilebg.com - info@agilebg.com Enviroment  NO MORE (cr,uid,ids,...,context)  env è parte del RecordSet  Chiamate di metodo più rapide: self.search([('is_company', '=', True)]) res.partner(7, 18, 12, 14, 17, 19, 8, 31, 26, 16) self.search([('is_company', '=', True)], limit=1).name 'My_Partner' #accesso a env self.env cursor = self._cr self.env.cr self.env.user self.env['res.partner'].with_context(tz=x).create(vals)
  • 7. Agile Business Group - www.agilebg.com - info@agilebg.com Modulo Presentation Talk Fields and Methods
  • 8. Agile Business Group - www.agilebg.com - info@agilebg.com Fields  Fields come descriptors della classe  Proprietà Date e Datetime: ● to_string  to_string in datetime ● from_string  from_string in datetime ● today  now in datetime ● context_today  context_timestamp in datetime name = fields.Char(string='Name') description = fields.Text( 'Description') user_id = fields.Many2one( 'res.partner', string='Supervisor') partner_id = fields.Many2Many( 'res.partner', string='Subscribers') buffet = fields.Boolean('Buffet') prize = fields.Float( string='Ticket Prize') state = fields.Selection([ ('draft', 'Draft'), ('paid', 'Paid'), ('cancel', 'Cancelled')]) date = fields.Date(string='Date')
  • 9. Agile Business Group - www.agilebg.com - info@agilebg.com Functional Fields  felds.functionNO MORE!  storelimitatoaTruee Falseeadundecorator dedicato sul metodo amount_total = fields.Float( string='Subtotal', store=True, readonly=True, compute='_compute_amount') @api.one @api.depends('buffet', 'projector', 'prize') def _compute_amount(self): if self.buffet: self.amount_total = self.prize + 4 if self.projector: self.amount_total = self.prize + 10
  • 10. Agile Business Group - www.agilebg.com - info@agilebg.com Method and Decorators  I Decorator sonola“frma”cheidentifca il tipodi metodo  @api.one: il decorator ciclasui recorddel recordset, self è un record  @api.multi: selfèil RecordSetcorrentesenza iterazioni  @api.model: self gli viene passato dall'esterno
  • 11. Agile Business Group - www.agilebg.com - info@agilebg.com Method and Decorators @api.multi def pay_amount(self): for talk in self: talk.state = 'paid' @api.one def check_availability(self): total = self.daily_total(fields.Date.today()) if total <= self.env.user.company_id.total_daily: self.avaible = True else: self.avaible = False @api.model def daily_total(self, today): daily_total = 0 for talk in self: if talk.date.to_string == today: daily_total += talk.amount_total return daily_total
  • 12. Agile Business Group - www.agilebg.com - info@agilebg.com Method and Decorators  @api.onchange: nonsi dichiaranopiùgli onchange nelleviste, bastausarequestodecorator sopraad un modulo  @api.returns:questodecoratorgarantisce l'univocità del recordset ritornato dal metodo. @api.onchange('fieldx'): def do_stuff(self): if self.fieldx == x: self.fieldy = 'toto' @api.returns('res.partner') def afun(self): ... return x # a RecordSet
  • 13. Agile Business Group - www.agilebg.com - info@agilebg.com Link Utili  https://www.odoo.com/documentation/8.0/  https://github.com/nbessi/odoo_new_api_guideli ne  http://www.slideshare.net/openobject/odoo-from -v7-to-v8-the-new-api
  • 14. Agile Business Group - www.agilebg.com - info@agilebg.com Contatti:  nicola.malcontenti@agilebg.com  Twitter: twitter.com/Hurrinico  GitHub: github.com/hurrinico
  • 15. Agile Business Group - www.agilebg.com - info@agilebg.com Grazie per l'attenzione!