Introduzione
Benvenuto nella documentazione delle API di Donodoo!
Puoi utilizzare queste API per interagire con il tuo database in base alle regole di accesso del tuo utente.
Librerie
Per installare la libreria
$ pip install OdooRPC$ composer install odoo-rpc-clientDonodoo, come Odoo, espone delle API basate sui protocolli XMLRPC oppure JSONRPC. È possibile dialogare con le API tramite il meccanismo essenziale esposto nella documentazione ufficiale di Odoo anche se noi raccomandiamo di utilizzare delle librerie specifiche per semplificare l’interfacciamento.
Attualmente le librerie raccomandate e utilizzate in questa documentazione sono
- OdooRPC: libreria Python
- OdooRPCClient: libreria PHP
Autenticazione
Per effettuare il login, questo è il codice:
import odoorpc
odoo = odoorpc.ODOO(host, port)
odoo.login(database, username, password)
user = odoo.env.user
print(user.name) # name of the user connected
print(user.company_id.name) # the name of its companyuse OdooRPCClient\Client;
$odoo = new Client($url);
$odoo->login($database, $username, $password);
$user = $odoo->env->user;
echo "{$user->name}\n";
echo "{$user->company_id->name}\n";Prima di effettuare qualsiasi operazione tramite le API è necessario autenticarsi. Il tipo di operazioni che possono essere svolte dipendono dai permessi dell’utente utilizzato.
Login
login(database, username, password)
- database: database su cui autenticarsi
- username: nome utente
- password: password utente
CRUD
Creazione
Creazione di un oggetto
vals = {
'firstname': 'Mario',
'lastname': 'Rossi',
'email': 'mario@rossi.it'
}
odoo.env['ngo.donor'].create(vals)$vals = [
'firstname' => 'Mario',
'lastname' => 'Rossi',
'email' => 'mario@rossi.it'
]
$odoo->env['ngo.donor']->create(vals)Risposta
12345 # Id della risorsa creata12345 # Id della risorsa creataPer creare un oggetto si utilizza il metodo create legato a tutte le risorse Donodoo. Come parametro un dizionario con i valori dell’oggetto da creare.
create(values)
- values: dizionario di valori con cui inizializzare l’oggetto
Lettura
Lettura di uno o piu’ oggetti
donor_id = odoo.env['ngo.donor'].browse(12345)
print(donor_id.name)
donor_ids = odoo.env['ngo.donor'].browse([12345, 12346, 12347])
for donor_id in donor_ids:
print(donor_id.name)$donor_id = $odoo->env['ngo.donor']->browse(12345);
echo "{$donor_id->name}\n";
$donor_ids = $odoo->env['ngo.donor']->browse([12345, 12346, 12347]);
foreach($donor_ids as $donor_id) {
echo "{$donor_id->name}\n";
}Per leggere i dati relativi ad un oggetto (o a piu’ oggetti) partendo dai loro id e’ possibile usare il metodo browse
browse(id|ids)
- id|ids: puo’ essere un intero rappresentante un id di un oggetto, opppure una lista di interi per leggere piu’ oggetti in una sola chiamata
Ricerca
Ricerca di oggetti
ids = odoo.env['ngo.donor'].search([
('email', 'like','gmail.com')
])
print(ids)$ids = $odoo->env['ngo.donor']->search([
['email','like','gmail.com']
])
print_r(ids)Risposta
# lista di _id_ relativi alla ricerca
[
12345,
12346,
12347
]E’ possibile effettuare ricerche su un determato insieme di oggetti per farlo si ricorre al metodo search
search(domain, limit, offset)
- domain: esprime il dominio della ricerca, e’ una lista di tuple composte da campo,operatore,valore
- limit: il numero massimo di elementi da restituire nella ricerca
- offset: l’offset da cui partire nei risultati (utile per la paginazione)
Ricerca e lettura
Ricerca e lettura di oggetti
ids = odoo.env['ngo.donor'].search_read([
('email', 'like','gmail.com')
], ['name', 'email'])
print(ids)$ids = $odoo->env['ngo.donor']->search_read([
['email','like','gmail.com']
], ['name', 'email'])
print_r(ids)Risposta
# lista di _id_ relativi alla ricerca
[
{
'id': 12345,
'name': 'Tizio',
'email': 'tizio@gmail.com'
},
{
'id': 12346,
'name': 'Caio',
'email': 'caio@gmail.com'
},
{
'id': 12347,
'name': 'Sempronio',
'email': 'sempronio@gmail.com'
},
]# lista di _id_ relativi alla ricerca
[
[
'id' => 12345,
'name' => 'Tizio',
'email' => 'tizio@gmail.com'
],
[
'id' => 12346,
'name' => 'Caio',
'email' => 'caio@gmail.com'
],
[
'id' => 12347,
'name' => 'Sempronio',
'email' => 'sempronio@gmail.com'
],
]E’ possibile effettuare ricerche su un determato insieme di oggetti e farse restituire direttamente il valore di alcuni campi per diminuire il numero di richieste nessarie. Per farlo si ricorre al metodo search_read
search_read(domain, fields, limit, offset)
- domain: esprime il dominio della ricerca, e’ una lista di tuple composte da campo,operatore,valore
- fields: lista dei campi da restituire
- limit: il numero massimo di elementi da restituire nella ricerca
- offset: l’offset da cui partire nei risultati (utile per la paginazione)
Conteggio oggetti
Contare quanti utenti hanno una mail gmail.com
count = odoo.env['ngo.donor'].search_count([
('email', 'like','gmail.com')
])
print(count)$count = $odoo->env['ngo.donor']->search_count([
['email','like','gmail.com']
])
print_r(icount)Risposta
42 # Numero di ogggetti trovati relativi al _domain_ usatoE’ possibile contare quanti oggetti rispondono a determinati criteri di ricerca. Per farlo si ricorre al metodo search_count
search_count(domain)
- domain: esprime il dominio della ricerca, e’ una lista di tuple composte da campo,operatore,valore
Modifica
Modificare un oggetto
donor_id = odoo.env['ngo.donor'].browse(12345)
donor_id.write({
'email': 'test@test.it',
'phone': '0551234567s'
})$donor_id = $odoo->env['ngo.donor']->browse(12345)
$donor_id->write([
'email' => 'test@test.it',
'phone' => '0551234567s'
])E’ possibile modificare i dati relativi ad un oggetto utilizzando il metodo write
write(values)
- values: dizionario di valori con cui modificare l’oggetto
Cancellazione
Eliminare definitivamente un oggetto
donor_id = odoo.env['ngo.donor'].browse(12345)
donor_id.unlink()$donor_id = $odoo->env['ngo.donor']->browse(12345)
$donor_id->unlink()E’ possibile eliminare un oggetto utilizzando il metodo unlink
unlink()
Donatori
Lettura di un donatore
donor_id = odoo.env['ngo.donor'].browse(12345)$donor_id = $odoo->env['ngo.donor']->browse(12345)L’insieme degli oggetti donatori risponde alla risorsa ngo.donor
Deleghe
Lettura di un donatore
subscription_id = odoo.env['sale.subscription'].browse(12345)$subscription_id = $odoo->env['sale.subscription']->browse(12345)L’insieme degli oggetti deleghe risponde alla risorsa sale.subscription
Campagne
Lettura di una campagna
campaign_id = odoo.env['ngo.campaign'].browse(12345)$campaign_id = $odoo->env['ngo.campaign']->browse(12345)L’insieme degli oggetti campagna risponde alla risorsa ngo.campaign
campaign_id = odoo.env['ngo.campaign'].browse(12345)
campaign_id.open()$campaign_id = $odoo->env['ngo.campaign']->browse(12345)
$campaign_id->open()Apri campagna
open()
Sposta una campagna dallo stato Bozza allo stato Aperto. Se presenti donatori nella lista assiciata crea automaticamente le lavorazioni relative.
campaign_id = odoo.env['ngo.campaign'].browse(12345)
campaign_id.close()$campaign_id = $odoo->env['ngo.campaign']->browse(12345)
$campaign_id->close()Chiudi campagna
close()
Sposta una campagna dallo stato Aperto allo stato Chiuso. Se presenti Lavorazioni non ancora completate le annulla automaticamente.
campaign_id = odoo.env['ngo.campaign'].browse(12345)
campaign_id.add_donors_by_ids([123, 456, 789])$campaign_id = $odoo->env['ngo.campaign']->browse(12345)
$campaign_id->add_donors_by_ids([123, 456, 789])Aggiungi donatori
add_donors_by_ids(ids)
Aggiunge donotori alla lista legata alla campagna. Se non e’ presente la lista ne crea una di default. Se la campagna e’ in stato Aperto vengono automaticamente generate le lavorazioni.
- ids: lista di id donatore da aggiungere alla lista della campagna
Lavorazioni
Lettura di una lavorazione
job_id = odoo.env['ngo.job'].browse(12345)$job_id = $odoo->env['ngo.job']->browse(12345)L’insieme degli oggetti lavorazioni risponde alla risorsa ngo.job
Liste
Lettura di una lista
target_id = odoo.env['ngo.target'].browse(12345)$target_id = $odoo->env['ngo.target']->browse(12345)L’insieme degli oggetti liste risponde alla risorsa ngo.target
target_id = odoo.env['ngo.target'].browse(12345)
target_id.add_donors_by_ids([123, 456, 789])$target_id = $odoo->env['ngo.target']->browse(12345)
$target_id->add_donors_by_ids([123, 456, 789])Aggiungi donatori
add_donors_by_ids(ids)
Aggiunge donotori alla lista.
- ids: lista di id donatore da aggiungere alla lista
target_id = odoo.env['ngo.target'].browse(12345)
target_id.remove_donors_by_ids([123, 456, 789])$target_id = $odoo->env['ngo.target']->browse(12345)
$target_id->remove_donors_by_ids([123, 456, 789])Rimuovi donatori
remove_donors_by_ids(ids)
Rimuove donotori alla lista.
- ids: lista di id donatore da rimuovere dalla lista
target_id = odoo.env['ngo.target'].browse(12345)
target_id.add_subscriptions_by_ids([123, 456, 789])$target_id = $odoo->env['ngo.target']->browse(12345)
$target_id->add_subscriptions_by_ids([123, 456, 789])Aggiungi deleghe
add_subscriptions_by_ids(ids)
Aggiunge deleghe alla lista.
- ids: lista di id delega da aggiungere alla lista
target_id = odoo.env['ngo.target'].browse(12345)
target_id.remove_subscriptions_by_ids([123, 456, 789])$target_id = $odoo->env['ngo.target']->browse(12345)
$target_id->remove_subscriptions_by_ids([123, 456, 789])Rimuovi deleghe
remove_subscriptions_by_ids(ids)
Rimuove deleghe alla lista.
- ids: lista di id delega da rimuovere dalla lista