Odoo 8.0. Le nuove API.



Similar documents
Warehouse management. Deployment Management Scalability & Integration

SalesJunction.com. Sales Force Automation & CRM. SJAPI Guide

C.S.E. Nodi Tipici Parametrizzati al /04/2015 Copyright (c) Castalia srl

Corso: Microsoft Project Server 2010 Technical Boot Camp Codice PCSNET: AAAA-0 Cod. Vendor: - Durata: 5

Intelligent Motorola Portable Radio Energy System

DAY 1 THURSDAY 25 JUNE I GIORNATA GIOVEDÌ 25 GIUGNO

Technologies and systems for business integration.

Banners Broker è una. Compagnia di pubblicità online

Cloud Services: cosa sono e quali vantaggi portano alle aziende manifatturiere

Source code security testing

Documents to be submitted for the signature of the IPA Subsidy Contract

VASCO Data Security. The Authentication Company. Richard Zoni Channel Manager Italy

DDL ed SQL Compravendite Immobiliari

Nuovi domini di primo livello - Registra nuove estensioni con FabsWeb_HOST

Corso: Mastering Microsoft Project 2010 Codice PCSNET: MSPJ-11 Cod. Vendor: Durata: 3

From Complexity to Client Centricity - Business Analytics nel settore bancario

I NUOVI DOMINI. Nome* Cognome* INDICE 2 SERVIZI TOP 30 3 EDUCAZIONE 4 DENARO E FINANZA 4 INTRATTENIMENTO 4 IDENTITA E STILI DI VITA 5 AFFARI

Misurazione performance. Processing time. Performance. Throughput. Francesco Marchioni Mastertheboss.com Javaday IV Roma 30 gennaio 2010

Titoli delle qualifiche

How To Become A Payment Agent In Italy

From Open Data & Linked Data to Ontology. example:

Versione: 2.1. Interoperabilità del Sistema di Accettazione di SPT

Capitolo 14: Flussi. Capitolo 14. Flussi Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2

Exercises: XSD, XPath Basi di da4 2

Application Lifecycle Management. Build Automation. Fabrizio Morando Application Development Manger Microsoft Italia

Le sfide e le opportunità dell internet mobile nelle aziende

Coverholder reporting standards

Converting the Stay Permit

DIRECTORS AND OFFICERS PROPOSTA DI POLIZZA

SAP FORUM 2014 Hana Cloud Portal: Il cloud come ti serve

Converting the stay permit. from study to work

ESERCIZIO PL/SQL e PSP

Click on REGISTRAZIONE NUOVO UTENTE at the bottom of the page.

Domain-specific terminology extraction for Machine Translation. Mihael Arcan

Ricercare l efficienza operativa facilitando il cambiamento con soluzioni enterprise avanzate

Geo-Platform Introduction

ipratico POS Quick Start Guide v. 1.0

VoIP : Voice over Internet Privacy. Alessio L.R. Pennasilico mayhem@aipsi.org

ITIL v3 - Overview. Claudio Tancini Marzo 2015 INTERNAL USE ONLY

Cifratura Dati in Tabelle MySQL

«Software Open Source come fattore abilitante dei Progetti per le Smart Cities»

New Media Advertising Agency

c-pro nano RACK & c-pro micro RACK

24 ottobre 2013.openerp.it XML-RPC vs Psycopg2 Dr. Piero Cecchi. OpenERP Analisi Prestazionale Python script XML-RPC vs Psycopg2

How To Manage A Network On A Pnet 2.5 (Net 2) (Net2) (Procedure) (Network) (Wireless) (Powerline) (Wired) (Lan 2) And (Net1) (

8Q PRQGR GL FRQWHQLWRUL $ ZRUOG RI HQFORVXUHV

INFORMAZIONI GENERALI / GENERAL INFORMATION

Ferramedia Network business center Berlin Dubai, Mumbai e Palermo. sister companies

How to renew S&S Video Italian version IBM Corporation

Zefiro ITA N 134 Circulation: Pag. 37

Master of Science. M, IM, MM, AFC, GIO, FINANCE, ACME, ESS, EMIT (taught in English)

DTI / Titolo principale della presentazione IPHONE ENCRYPTION. Litiano Piccin. 11 ottobre 2014

COMPANY PROFILE PROFILO AZIENDALE

ACCESS TO GSE INTERNET PORTAL

Class contents and exam requirements Code (20419) Italian Language Second language B2 Business

PLC: SIMATIC S più TIA Portal V12 SP 1

PRE ARRIVAL FORM FOR EXCHANGE STUDENTS

OpenERP: 100% pythonic way for business management

Process Mining. Luigi Pontieri Istituto di Calcolo e Reti ad Alte Prestazioni ICAR-CNR Via Bucci 41c, Rende (CS) pontieri@icar.cnr.

Alberto Meneghini! Security Leader, IBM Italia! IBM Security IBM Corporation IBM Corporation

Object Relational Mapping for Database Integration

How To Invoice In Italy

ONLINE COLLABORATION USING DATABASES IMAGE EDITING SPECIALISED LEVEL CAD2D SPECIALISED LEVEL

Corso: Supporting and Troubleshooting Windows 10 Codice PCSNET: MW10-3 Cod. Vendor: Durata: 5

Un nuovo modello di efficienza all interno del Data Center Fabio Di Dionisio HP Storage Division

Enterprise Risk Management: Strategie e Soluzioni a confronto

LED Power. Power Supplies for constant current HI-POWER LEDs 350/700mA Alimentatori per LED in corrente costante HI-POWER 350/700mA 82206/700

w w w. a r t e f e r r o. c o m

Questa versione del programma è da intendersi come provvisoria * da confermare Seguici sui Social Network e commenta con #forumt2s This version is

Presentation title here

STORAGE E NUVOLE Juku-unplugged v3.0

FLAVIO D ANNUNZIO Digital for Business

Big Data, Big True. IDC Big Data Conference II, Bologna 19 novembre Fabio Rizzotto IT Research&Consulting Director, IDC Italy

Chi sono in quattro punti.

Progetto Ombra Milano propone un nuovo progetto dal design tutto italiano. Una SCALA di prestigio accessibile a tutti.

ITALIAN LANDSCAPE ARCHITECTURE HISTORY AND SEMIOLOGY OF LANDSCAPE AND GARDENS IN UMBRIA UNIVERSITY FOR FOREIGNERS OF PERUGIA 3-13 SEPTEMBER 2012

Programma corso di formazione J2EE

Main Points. File layout Directory layout

How To Read Investire In Borsa Con I Trend Pdf

- ProFTPd: - ftp://ftp.proftpd.org/distrib/source/proftpd tar.gz

School Fees

ACCESS TO GSE INTERNET PORTAL

Transcription:

Odoo 8.0 Le nuove API. davide.corio@abstract.it / abstract per pycon6

Nuove API, perchè? più object oriented stile più pythonico hooks risparmio di codice

Principali novità uso dei decoratori recordsets environment nuovi fields nuovo metodo per defaults muovo metodo per onchange

Environment Metodo più semplice ed ordinato per accedere ad informazioni comuni e soprattutto per incapsulare cr, uid, ids, context e recordsets.

Environment esempio di migrazione da v7 a v8 # v7 def mio_metodo(self, cr, uid, ids, context=none): # v8 def mio_metodo(self):

Environment accedere all environment def mio_metodo(self): self.env # oppure # oggetto.env

Environment # accedere all utente ipdb> self.env.user res.users(1,) # accedere a records tramite XML id ipdb> self.env.ref('base.main_company') res.company(1,) # invalidare cache ipdb> self.env.invalidate_all() # ricalcolare campi calcolati ipdb> self.env.recompute True

Environment altri metodi utili (eg: sudo()) https://github.com/odoo/odoo/blob/8.0/openerp/api.py https://www.odoo.com/documentation/8.0/reference/orm.html http://odoo-new-api-guide-line.readthedocs.org/en/latest/environment.html

Decoratori @api.model from openerp import models, api class MioModello(models.Model): @api.model def create(self, values): # self è un recordset def create(self, cr, uid, values, context=none): # self non è un recordset

Decoratori @api.multi from openerp import models, api class MioModello(models.Model): @api.multi def write(self, values): # self è un recordset def write(self, cr, uid, ids, values, context=none): # self non è un recordset

Decoratori @api.one from openerp import models, api class MioModello(models.Model): @api.multi @api.returns( account.invoice ) def mio_metodo(self): return invoice # ritorna un recordset di N fatture

Decoratori @api.onchange from openerp import models, api class MioModello(models.Model): # invoca mio_metodo se cambiano nome e cognome @api.onchange('nome', 'cognome') def mio_metodo(self): self.iniziali =

Decoratori @api.depends from openerp import models, api class MioModello(models.Model): iniziali = fields.char(compute='_calcola_iniziali') @api.one @api.depends('partner_id.name', 'partner_id.surname ) def _calcola_iniziali(self): iniziali = self.partner_id.name[0] + self.partner_id.surname[0] self.iniziali = iniziali.upper()

Decoratori @api.constrains from openerp import models, api class MioModello(models.Model): @api.one @api.constrains('campo1', 'campo2') def mio_metodo(self): if self.campo1 == self.campo2: raise ValidationError("Messaggio di errore")

Recordset istanza della classe del modello ipdb> self account.invoice(9,) ipdb> invoices = self.search([]) ipdb> invoices account.invoice(1, 6, 5, 4, 3, 2, 9, 7, 8) ipdb> invoices[6].number u'saj/2015/0001' ipdb> invoices. class <class 'openerp.api.account.invoice'> ipdb>

Nuovi fields addio _columns e _defaults (!!) from openerp import fields numero_intero = fields.integer( Numero Intero ) numero_decimale = fields.float( Numero Decimale ) testo = fields.char( Testo ) testo_lungo = fields.text( Testo Lungo ) cliente = fields.many2one( res.partner, string= Cliente ) clienti = fields.many2many( res.partner, string= Clienti ) righe_di_qualcosa = fields.one2many( modello.riga, parent_id, string= Righe )

Nuovi fields addio _columns e _defaults (!!) from openerp import fields # default statico testo_con_default = fields.char( Testo, default= testo predefinito ) # funzione per calcolo default testo_con_default = fields.char( Test, default=_una_funzione) def _una_funzione(self): return testo predefinito

Nuovi fields relazioni più semplici campi calcolati più semplici from openerp import fields # campo related campo_relazionato = fields.char( Testo, related= altro_campo_di_testo ) # campo calcolato campo_calcolato = fields.char( Testo, compute= _una_funzione, store=true) def _una_funzione(self): return testo predefinito

Documentazione https://www.odoo.com/documentation/8.0/reference.html http://odoo-new-api-guide-line.readthedocs.org/en/latest/index.html

Q&A

Davide Corio davide.corio@abstract.it