Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: xmlrpc e crezione record con specifico ID

xmlrpc e crezione record con specifico ID 1 Anno 9 Mesi fa #27911

  • lucasub
  • Avatar di lucasub
  • Online
  • Moderator
  • Messaggi: 131
  • Ringraziamenti ricevuti 4
  • Karma: 1
Ciao a tutti, avete idea su come sia possibile creare un record tramite xmlrpc forzando uno specifico ID?
Tanto per fare un esempio, se dovessi importare dei clienti da una versione di odoo ad un'altra versione di odoo, dovrei, per comodità, far in modo che gli ID dei vari record siano identici tra le tabelle delle 2 versioni.

Lo so che odoo è lui a gestire l'accesso al database e quindi ad assegnare l'ID ai nuovi record, ma volevo sapere se c'è un trucco per fare ciò senza usare direttamente le query a livello di database.

Penso sia fondamentale per fare la migrazione da un DB ad un'altro.

Grazie per le info.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

xmlrpc e crezione record con specifico ID 1 Anno 9 Mesi fa #27914

  • Antoniov
  • Avatar di Antoniov
  • Online
  • Administrator
  • Messaggi: 1555
  • Ringraziamenti ricevuti 283
  • Karma: -115
Mi sto scontrando anche io con lo stesso problema senza successo.

Io uso oerplib che utilizza xmlrpc per dialogare.
Ho provato a passare il campo 'id' nella funzione create ma è ignorato.
Ho provato a usare la funzione write ma il record deve ovviamente esistere.

Invece con accesso diretto SQL sono riuscito a fare questa operazione.
Mi pare, ma non ho la risposta definitiva, che occorra accedere direttamente al DB, oppure scrivere codice in uno specifico modulo che lavora lato server.
Lato client non sembra possibile.
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. - Presidente eletto dell'associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

xmlrpc e crezione record con specifico ID 1 Anno 9 Mesi fa #27917

  • Antoniov
  • Avatar di Antoniov
  • Online
  • Administrator
  • Messaggi: 1555
  • Ringraziamenti ricevuti 283
  • Karma: -115
Ciao,
ti fornisco uno spunto che potrebbe risolvere.

Sono partito dal fatto che Odoo riesce ad importare record lato client con lo specifico id, così ho scavato nel codice.
Odoo rende disponibile la funzione load che è quella usata dall'import.
Quindi in via teorica è possibile fornire l'id come avviene nei file csv di importazione: 'nome_modulo.id'
Ci sto provando ma ancora non ho ottenuto risultati.
La documentazione della load è la seguente:
def load(self, cr, uid, fields, data, context=None):
        """
        Attempts to load the data matrix, and returns a list of ids (or
        ``False`` if there was an error and no id could be generated) and a
        list of messages.

        The ids are those of the records created and saved (in database), in
        the same order they were extracted from the file. They can be passed
        directly to :meth:`~read`

        :param fields: list of fields to import, at the same index as the corresponding data
        :type fields: list(str)
        :param data: row-major matrix of data to import
        :type data: list(list(str))
        :param dict context:
        :returns: {ids: list(int)|False, messages: [Message]}
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. - Presidente eletto dell'associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

xmlrpc e crezione record con specifico ID 1 Anno 9 Mesi fa #27997

  • lucasub
  • Avatar di lucasub
  • Online
  • Moderator
  • Messaggi: 131
  • Ringraziamenti ricevuti 4
  • Karma: 1
Al momento ho pensato di fare così:
se il rescord esiste, lo aggiorno, altrimento lo creo con una query sql e poi lo aggiorno tramite xmlrpc.

Al momento sembra funzionare.

bye
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

xmlrpc e crezione record con specifico ID 1 Anno 9 Mesi fa #28005

  • daphnesolutions
  • Avatar di daphnesolutions
  • Offline
  • Fresh Boarder
  • Messaggi: 12
  • Ringraziamenti ricevuti 1
  • Karma: 0
Puoi postare il codice? Io al momento provo questo (invoice_id essendo l'id di uno degli account.invoice già esistenti):
new_id = invoice_id + 3
print models.execute_kw(db, uid, password, 'account.invoice', 'write', [[invoice_id], {
    'id': new_id
    }])
Ma non mi aggiorna niente, anche se mi ritorna "True"..
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

xmlrpc e crezione record con specifico ID 1 Anno 9 Mesi fa #28012

  • Antoniov
  • Avatar di Antoniov
  • Online
  • Administrator
  • Messaggi: 1555
  • Ringraziamenti ricevuti 283
  • Karma: -115
daphnesolutions ha scritto:
Puoi postare il codice? Io al momento provo questo (invoice_id essendo l'id di uno degli account.invoice già esistenti):
new_id = invoice_id + 3
print models.execute_kw(db, uid, password, 'account.invoice', 'write', [[invoice_id], {
    'id': new_id
    }])
Ma non mi aggiorna niente, anche se mi ritorna "True"..
Per favore, leggi quanto ho scritto sopra
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. - Presidente eletto dell'associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.149 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam