SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
DA E VERSO ODOO
XML-RPC, ERPPEEK E PYTHON
PyCon 2015 - Firenze - Apulia Software s.r.l.
APULIA SOFTWARE
FRANCESCO "OPENCODE" APRUZZESE
ANDREA "4EVERAMD" GALLINA
Breve (aka brevissima) introduzione su
COS'È ODOO?
È UN GESTIONALE? NO!
Un gestionale è come Steven Seagal:
1. Lento
2. Abbastanza limitato
3. Riesce a compiere il suo lavoro ma non si capisce come
È UN ERP? NON PIÙ!
Un ERP è come Jackie Chan:
1. Incanta
2. Difficile da seguire
3. A volte fa cose troppo spettacolari
COS'È ALLORA ODOO? MOLTO DI
PIÙ!
Odoo è come MacGyver:
1. È abbastanza flessibile per fare tutto
2. Dispone di tutti gli strumenti per giungere a destinazione
3. Scegli la strada che preferisci
COMUNICARE CON ODOO
NET-RPC
COSÈ NET-RPC?
RPC: Remote Procedure Call
NET-RPC è un protocollo di comunicazione che permette di
eseguire chiamate a procedure remote utilizzando i socket
ed il modulo Pickle per Python.
DEPRECATO
COME FUNZIONA NET-RPC?
Non funziona! Se vuoi usare qualcosa di antico ritorna alle
schede forate!
COMUNICARE CON ODOO
XML-RPC
COSÈ XML-RPC?
XML: eXtensible Markup Language
RPC: Remote Procedure Call
XML-RPC è un protocollo di comunicazione cross platform
che permette di eseguire chiamate a procedure remote
utilizzando lo standard XML come veicolo per il
trasferimento dei dati attraverso una connessione in rete
COME FUNZIONA XML-RPC?
COME UTILIZZARE XML-RPC
UN PO' DI CODE PORN
INIZIALIZZARE UNA CONNESSIONE
import xmlrpclib
username = 'admin' #the user
password = 'admin' #the password of the user
dbname = 'odoo'    #the database
# Get the uid
sock_common = xmlrpclib.ServerProxy(
    'http://localhost:8069/xmlrpc/common')
uid = sock_common.login(dbname, username, password)
sock = xmlrpclib.ServerProxy(
    'http://localhost:8069/xmlrpc/object')
                        
CREARE UN RECORD
partner = {'name': 'Mario Rossi',
           'street': 'Via Verdi, 15',
           'city': 'Roma'}
new_id = sock.execute(dbname, uid, password, 'create', partner)
                        
RICERCHE
args = [('city', 'ilike', 'Roma')]
ids = sock.execute(dbname, uid, password, 'res.partner',
                   'search', args)
                        
LEGGERE DATI
fields = ['name', 'street']
data = sock.execute(dbname, uid, password, 'res.partner',
                    'read', ids, fields)
# ids = id list
print data
[{'name': 'Mario Rossi', 'street: 'Roma', 'id': 51}]
                        
AGGIORNARE UN RECORD
values = {'vat': 'ZZ1ZZZ'} #data to update
result = sock.execute(dbname, uid, password, 'res.partner',
                      'write', ids, values)
                        
CANCELLARE UN RECORD
result = sock.execute(dbname, uid, password, 'res.partner',
                      'unlink', ids)
                        
COMUNICARE CON ODOO
JSON-RPC
COSÈ JSON-RPC?
JSON: JavaScript Object Notation
RPC: Remote Procedure Call
JSON-RPC, come l'XML-RPC, è un protocollo di
comunicazione cross platform che permette di eseguire
chiamate a procedure remote utilizzando il formato JSON
per i dati
COME UTILIZZARE JSON-RPC
UN PO' DI CODE PORN
INIZIALIZZARE UNA CONNESSIONE
import jsonrpclib
# server proxy object
url = "http://localhost:8069/jsonrpc"
server = jsonrpclib.Server(url)
DB = 'odoo'
USER = 'admin'
PASS = 'admin'
# login
uid = server.call(service="common", method="login",
                  args=[DB, USER, PASS])
QUALCHE AIUTO...
# helper function for invoking model methods
def invoke(model, method, *args):
    args = [DB, uid, PASS, model, method] + list(args)
    return server.call(service="object", method="execute",
                       args=args)
                        
CHIAMATA FUNZIONE
args = {
    'name' : 'Stefano Lavori',
    'fiscalcode' : 'APPLED50G13E569P',
    'create_uid': uid,
}
partner_id = invoke('res.partner', 'create', args)
                        
COMUNICARE CON ODOO
ERPPEEK
COSÈ ERPPEEK?
ERPPEEK è una libreria Python, basata su XML-RPC, che
permette, grazie ad un alto livello di astrazione, di gestire
molto facilmente i dati di una installazione di Odoo.
ERPPEEK, inoltre, può essere utilizzato come software
autonomo da riga di comando per navigare tra gli oggetti di
Odoo ed i loro metodi.
COME UTILIZZARE ERPPEEK COME LIBRERIA
UN PO' DI CODE PORN
INIZIALIZZARE UNA CONNESSIONE
import erppeek
server = erppeek.Client(
     'http://localhost:8069', db='demo',
     user='admin', password='admin')
                        
CREARE UN RECORD
data = {'name': 'Mario Rossi',
        'street': 'Via Verdi, 15',
        'city': 'Roma'}
partner = server.ResPartner.create(data)
                        
RICERCHE
args = [('city', 'ilike', 'Firenze'),
        ('customer', '=', True)]
# or
args = ['city = Firenze', 'customer = True']
partner_ids = ResPartner.search(args)
                        
LEGGERE DATI
# Read
server.ResPartner.read(partner_id)['name']
# Browse
server.ResPartner.browse(partner_id).name
                        
AGGIORNARE UN RECORD
partner = server.ResPartner.browse(partner_id)
partner.name = 'Stefano Lavori'
                        
CANCELLARE UN RECORD
server.ResPartner.unlink(partner_ids)
                        
COME UTILIZZARE ERPPEEK COME SOFTWARE
UN PO' DI SHELL PORN
--HELP
LEGGERE DEI DATI!
~$ erppeek ­d demo ­m res.partner ­f name ­f lang 1
"name","lang"
"Your Company","en_US"
                        
RICERCHE & QUERY
~$ erppeek ­d demo ­m res.groups ­f full_name 'id > 0'
                        
ACCESSO A MODELLI E METODI
~$ erppeek ­d auto_invoice ­u admin ­p admin
>>> users = model('res.users')
>>> users.count()
>>> users.browse(1)
                        
ERPPEEK
DIMOSTRAZIONE PRATICA
Q&A

Mais conteúdo relacionado

Semelhante a Da e verso odoo xml rpc, erppeek e python

Semelhante a Da e verso odoo xml rpc, erppeek e python (20)

Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
MongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDBMongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDB
 
php: back to basics
php: back to basicsphp: back to basics
php: back to basics
 
TOR - The Onion Router
TOR - The Onion Router TOR - The Onion Router
TOR - The Onion Router
 
Web Application Insecurity Uncensored
Web Application Insecurity UncensoredWeb Application Insecurity Uncensored
Web Application Insecurity Uncensored
 
Smau padova 2013 gianfranco tonello
Smau padova 2013 gianfranco tonelloSmau padova 2013 gianfranco tonello
Smau padova 2013 gianfranco tonello
 
Acadevmy - PWA Overview
Acadevmy - PWA OverviewAcadevmy - PWA Overview
Acadevmy - PWA Overview
 
RPSL e rpsltool
RPSL e rpsltoolRPSL e rpsltool
RPSL e rpsltool
 
node.js e Postgresql
node.js e Postgresqlnode.js e Postgresql
node.js e Postgresql
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red Hat
 
Jc06 Antonio Terreno Fluidtime
Jc06 Antonio Terreno FluidtimeJc06 Antonio Terreno Fluidtime
Jc06 Antonio Terreno Fluidtime
 
Internet of Things for Dummies
Internet of Things for DummiesInternet of Things for Dummies
Internet of Things for Dummies
 
TechDay: Internet delle cose - Paolo Aliverti
TechDay: Internet delle cose - Paolo Aliverti TechDay: Internet delle cose - Paolo Aliverti
TechDay: Internet delle cose - Paolo Aliverti
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016
 
Html5
Html5Html5
Html5
 
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
 
Deno - L'anagramma di node
Deno - L'anagramma di nodeDeno - L'anagramma di node
Deno - L'anagramma di node
 
Smau Milano 2102 Maurizio Del Corno
Smau Milano 2102 Maurizio Del CornoSmau Milano 2102 Maurizio Del Corno
Smau Milano 2102 Maurizio Del Corno
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
 
Linux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowToLinux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowTo
 

Da e verso odoo xml rpc, erppeek e python