OpenERP/dev/import

From zeroincombenze
Jump to: navigation, search
Tb arrow up.jpg File:Tb dev.png File:Tb dev.png File:Tb dev.png File:Tb dev.png Lang english.png


Importazione dati

L'importazione dei dati può avvenire in due tempi diversi:

  • All'installazione del modulo
  • A richiesta dell'utente finale


Importazione all'installazione

L'importazione dati all'installazione è definita attraverso il file di manifestazione dai parametri data, init_xml e update_xml. Inoltre è disponibile il parametro demo per caricare i dati dimostrativi.

I file possono essere in formato CSV o XML.

Importazione a richiesta

Questa importazione è disponibile solo se abilitata nel relativo pannello di controllo ConfigurazioneImpostazioni generali → Permetti agli utenti di importare file CSV.

Se l'opzione è attiva, nelle videate di tabella a lista è disponibile l'opzione importa. Questa opzione permette di importare soltanto file di tipo CSV.


Caratteristiche del file di importazione

Il file CSV deve contenere una riga di intestazione. I campi dell'intestazione sono validati con i nome interni della tabella da importare. La struttura dei separatori è anglosassone, modificabile con il parametro csv_internal_sep nel file di configurazione.


L'importazione tramite file XML permette un maggior controllo dell'importazione rispetto alla versione CSV e permette anche l'utilizzo di metodi/funzioni e test di validazione e verifica.

Odoo V6 data serialization


Formato CSV XML Note
Notazione Anglosassone modificabile Con tag XML
Separatore di record Fine riga Tag <record> </record>
Separatore di campo Carattere , (virgola) Tag <field> </field> Sconsigliato modificare separatore CSV
Identificatore di campo Nella prima riga (header) Attributo name
Tipo testo Consigliato tra doppi apici Attenzione a &lt; &gt; e "
Carattere " Raddoppiare il simbolo Esempio "Questo è un ""esempio""."
Carattere < Usare &lt; Esempio A&lt;B
Carattere > Usare &gt; Esempio B&gt;A
Tipo Numerico Numeri con eventuale punto decimale Come CSV Esempio 123.4
Booleano True o False Come CSV Sono ammessi anche i valori numerici 0 e 1
Data Formato ISO-8601 estesa Come CSV Esempio 1959-06-26
Dataora Formato ISO-8601 estesa ma con spazio Come CSV Esempio 1959-06-26 22:30
selection Uno dei valori non tradotti Come CSV Usare debug mode per lista
reference id in header Tag <ref> </ref> Vedere paragrafo su id
Espressione Non possibile Tag <eval> </eval>


I campi onetomany e manytomany sono gestiti con i seguenti comandi (onetomany soltanto da 0 a 2):

  1. (0, 0, { values }) - Crea un nuovo oggetto ed effettua il link alla relazione *tomany
  2. (1, ID, { values }) - Modifica il record collegato ID (e scrivi in valore in esse)
  3. (2, ID) - Rimuovi e cancella il record collegato ID (chiama unlink per ID, poi elimina completamente l'oggetto e ovviamente il link)
  4. (3, ID) - Rimuovi l'oggetto ID dalla relazione ma non lo cancella
  5. (4, ID) - Aggiungi un oggetto ID alla relazione
  6. (5, 0) - Rimuovi tutti i link (come (3,ID) ma agisce su tutti gli oggetti)
  7. (6, 0, { IDs }) - Rimpiazza tutte le relazioni con la lista passata (effettua (5, 0) e poi (4, ID) per ogni id in IDs)


Struttura dei dati

Ci sono 3 tipologie di dati:

  • Id
  • Campi semplici
  • Campi relazionali


id

Il campo id è un identificativo simbolico del record, univoco in tutto il database. La sua composizione è modulo.identificativo_del_modulo.

Se nel campo il modulo è assente è assunto il nome del modulo che si sta installando; nel caso di importazione su richiesta è assunto il nome del modulo predefinito che gestisce la tabella.

L'identificativo, nella sua forma più semplice è il numero di record, ma può essere un qualsiasi nome simbolico.

La tabella degli identificatori è visibile dal menù ConfigurazioneTechnicalSequenze e identificatoriIdentificatori esterni e per sua natura questa tabella ha dimensioni enormi.

Vedere Identificatori predefiniti

Esempi:

1 → colonna id: il record con id 1 della tabella corrente; se inserimento viene assegnato il valore 1 al id del record

base.1 → colonna id: il record con id 1 della tabella corrente nel modulo base; per moduli diversi da base il record deve esistere

base.it → colonna country_id/id: il valore it della tabella res_country del modulo base; per moduli diversi da base il record deve esistere

us → colonna country_id:id: il valore us della tabella res_country; per moduli diversi da base il record deve esistere


Campi semplici

Sono campi senza riferimenti ad altri valori. Possono essere testo, numeri, date, data e ora, booleani o liste di valori predefiniti (selezioni).


Campi relazionali

Sono definibili soltanto con il formato xml.


Definizioni XML

Il file XML deve iniziare con la dichiarazione di standard. I dati sono racchiusi tra i tag <openerp> e </openerp>. Al secondo livello sono definiti i tag </code> e <code>.

Ogni record è racchiuso tra i tag <record> e </record>.

La struttura è la seguente:

openerp 
   └─ data┐
       │  └─ noupdate
       │
       ├─ record┐
       │    │   ├─ id
       │    │   └─ model
       │    ├─ field┐
       │    │    │  ├─ ... (testo)
       │    │    │  ├─ eval
       │    │    │  ├─ file
       │    │    │  ├─ model
       │    │    │  ├─ name
       │    │    │  ├─ ref
       │    │    │  ├─ search┐
       │    │    │  │        ├─ field
       │    │    │  │        ├─ filter
       │    │    │  │        └─ group
       │    │    │  └─ type
       │    │    ├─ attrs
       │    │    ├─ class
       │    │    ├─ context
       │    │    ├─ domain
       │    │    ├─ groups
       │    │    ├─ invisible
       │    │    ├─ name
       │    │    ├─ on_change
       │    │    ├─ position
       │    │    ├─ readonly
       │    │    └─ widget
       │    ├─ form┐
       │    │      ├─ div
       │    │      ├─ field
       │    │      ├─ group
       │    │      └─ label
       │    └─ group
       │
       ├─ getitem┐
       │    │    ├─ index
       │    │    └─ type
       │    └ function┐
       │        │     ├─ id
       │        │     └─ model
       │        └─ value┐
       │                ├─ ... (testo)
       │                ├─ eval
       │                ├─ name
       │                └─ ref
       │
       ├─ function┐
       │    │     ├─ id
       │    │     └─ model
       │    └─ value┐
       │            ├─ ... (testo)
       │            ├─ eval
       │            ├─ name
       │            └─ ref
       │
       └─ assert┐
            │   ├─ id
            │   ├─ model
            │   └─ string
            └─ test┐
                   ├─ ... (testo) 
                   └─ expr


Esempio:

 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
    <data noupdate="1">
    
 <!-- Root user -->
        <record id="base.user_root" model="res.users">
            <field name="user_email">info@shs-av.com</field>
        </record>
         
 <!-- Root user -->
        <record id="base.partner_root" model="res.partner">
            <field name="country_id" ref="base.it"/>
            <field name="tz">Europe/Rome</field>
        </record>
         
 <!-- Base company -->
        <record id="base.main_partner" model="res.partner">
            <field name="name">Zeroincombenze</field>
        </record>
 
    </data>
 </openerp>


Tag dati

noupdate

N/D


Tag record

id

Id del record come descritto precedentemente

model

Modello dei dati


Tag field

Tag per definire un campo.

Nella sua forma più semplice, il testo è il suo valore del campo; il testo, se inserito, è incompatibile con i tag eval, ref e file

eval

Tag opzionale con un'espressione python per calcolare il valore; incompatibile con testo e con tag ref, file e file

file

Tag opzionale utilizzabile con i tipi char e base64 per inserire il contenuto da un file.

model

Tag obbligatorio se presente search, con il nome del modello dell'oggetto

name

Tag obbligatorio con il nome del campo SQL

ref

Tag opzionale con il valore id di collegamento (external id); il prefisso modulo può essere omesso, se il riferimento è interno al modulo stesso. Incompatibile con testo e con tag eval

search

Tag opzionale con un'espressione python per la ricerca. In caso di campi many2many fields restituito il primo valore.

type

Tag opzionale con un valore tra char, int, float, list, tuple, xml o html, file o base64.

xml unisce nodi XML nella radice del tag <data>; in xml e html, gli id esterni possono essere referenziati con elementi lista o tupla %(id_name)s specificando il tag <value> con gli stessi attributi.

file identifica un file locale nella directory del modulo; vedere get_module_resource().

base64 si aspetta un dato binario codificato base64.


Le tabelle

Per un'ulteriore vedere Lista delle tabelle OpenERP