7. 6
Cosè 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
8. 7
Come funziona NET-RPC?Come funziona NET-RPC?
Non funziona! Se vuoi usare qualcosa di antico ritorna alle schede
forate!
10. 9
Cosè 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
12. 11 . 1
Come utilizzare XML-RPCCome utilizzare XML-RPC
Un po' di Code PornUn po' di Code Porn
13. 11 . 2
Inizializzare una connessioneInizializzare 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')
14. 11 . 3
Creare un RecordCreare un Record
partner = {'name': 'Mario Rossi',
'street': 'Via Verdi, 15',
'city': 'Roma'}
new_id = sock.execute(dbname, uid, password, 'create', partner)
16. 11 . 5
Leggere DatiLeggere 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}]
17. 11 . 6
Aggiornare un RecordAggiornare un Record
values = {'vat': 'ZZ1ZZZ'} # data to update
result = sock.execute(dbname, uid, password, 'res.partner',
'write', ids, values)
18. 11 . 7
Cancellare un recordCancellare un record
result = sock.execute(dbname, uid, password, 'res.partner',
'unlink', ids)
20. 13
Cosè 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
21. 14 . 1
Come utilizzare JSON-RPCCome utilizzare JSON-RPC
Un po' di Code PornUn po' di Code Porn
22. 14 . 2
Inizializzare una connessioneInizializzare 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])
23. 14 . 3
Qualche aiuto...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)
26. 16
Cosè 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.
27. 17 . 1
Come utilizzare ERPPEEK come libreriaCome utilizzare ERPPEEK come libreria
Un po' di Code PornUn po' di Code Porn
28. 17 . 2
Inizializzare una connessioneInizializzare una connessione
import erppeek
server = erppeek.Client(
'http://localhost:8069', db='demo',
user='admin', password='admin')
29. 17 . 3
Creare un RecordCreare un Record
data = {'name': 'Mario Rossi',
'street': 'Via Verdi, 15',
'city': 'Roma'}
partner = server.ResPartner.create(data)