Il primo modulo¶
Panoramica¶
Il presente capitolo ti aiuterà a creare il primo modulo Odoo per poi distribuirlo nel progetto Odoo.sh desiderato.
Il tutorial richiede che tu abbia creato un progetto su Odoo.sh e la conoscenza dell’URL dell’archivio Github.
Verrà spiegato l’utilizzo base di Git e Github.
Si formulano le seguenti ipotesi:
~/src è la cartella dove sono memorizzate tutti gli archivi Git collegati ai tuoi progetti Odoo;
odoo è l’utente Github;
odoo-addons è l’archivio Github;
feature-1 è il nome del ramo di sviluppo;
master è il nome del ramo di produzione;
my_module è il nome del modulo.
Sostituisci i valori elencati con valori a tua scelta.
Creare il ramo di sviluppo¶
Da Odoo.sh¶
Nella vista con i rami:
fai clic su
+
accanto alla fase di sviluppo;scegli il ramo master nel campo Fork;
scrivi feature-1 nel campo To.
Una volta che il build è stato creato, puoi accedere all’editor e caricare la cartella ~/src/user per accedere al codice del ramo di sviluppo.
Dal computer¶
Clona l’archivio Github sul tuo computer:
$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/odoo/odoo-addons.git
$ cd ~/src/odoo-addons
Crea un nuovo ramo:
$ git checkout -b feature-1 master
Creare la struttura del modulo¶
Eseguire lo scaffolding del modulo¶
Anche se non è necessario, lo scaffolding evita il fastidio di dover configurare la struttura di base dei moduli Odoo. È possibile eseguire lo scaffolding di un nuovo modulo utilizzando l’eseguibile odoo-bin.
Dall’editor Odoo.sh, in un terminale:
$ odoo-bin scaffold my_module ~/src/user/
Oppure dal computer, se hai installato Odoo:
$ ./odoo-bin scaffold my_module ~/src/odoo-addons/
Se non vuoi installare Odoo sul tuo computer, è possibile scaricare il seguente modello di struttura del modulo
dove potrai sostituire ogni occorrenza di my_module con un nome a tua scelta.
Verrà creata la seguente struttura:
my_module
├── __init__.py
├── __manifest__.py
├── controllers
│ ├── __init__.py
│ └── controllers.py
├── demo
│ └── demo.xml
├── models
│ ├── __init__.py
│ └── models.py
├── security
│ └── ir.model.access.csv
└── views
├── templates.xml
└── views.xml
Avvertimento
Non utilizzare caratteri speciali diversi dal trattino basso ( _ ) o il segno meno (-) per il nome del modulo. Il nome viene utilizzato per le classi Python del tuo modulo e il fatto di avere un nome di classe con caratteri speciali diversi dal trattino basso non è valido in Python.
Elimina i commenti dal contenuto dei file:
models/models.py, un esempio di modello con i rispettivi campi;
views/views.xml, un albero e una vista modulo con i menu che li aprono;
demo/demo.xml, record demo per il modello di esempio in alto;
controllers/controllers.py, un esempio di controller che implementa alcuni percorsi;
views/templates.xml, due esempi di viste qweb utilizzate dai percorsi del controller di cui sopra;
__manifest__.py, il manifesto del tuo modulo che include il titolo, la descrizione e i file dati da caricare. Devi solo eliminare i commenti dal file con i dati relativi alla lista di controllo degli accessi:
# 'security/ir.model.access.csv',
Manuale¶
Se vuoi creare la struttura dei moduli manualmente, puoi seguire il tutorial Getting started per comprendere la struttura di un modulo e il contenuto di ogni file.
Eseguire il push del ramo di sviluppo¶
Fissa le modifiche di cui eseguire il commit
$ git add my_module
Esegui il commit delle modifiche
$ git commit -m "My first module"
Esegui il push delle modifiche nell’archivio remoto
Da un terminale dell’editor Odoo.sh:
$ git push https HEAD:feature-1
Il comando in alto viene spiegato nella sezione Eseguire il commit e applicare le modifiche del capitolo sull” Editor online che include la spiegazione riguardo i campi da riempire come nome utente e password e cosa fare se si utilizza l’autenticazione a due fattori.
Oppure dal terminale del computer:
$ git push -u origin feature-1
È necessario specificare -u origin feature-1 solo per il primo push. Da questo momento, per applicare le modifiche future dal tuo computer, puoi utilizzare semplicemente
$ git push
Testare il proprio modulo¶
Il ramo dovrebbe apparire nei rami di sviluppo del tuo progetto.
Nella vista rami del tuo progetto, puoi fare clic sul nome del ramo nel pannello di navigazione a sinistra per accedere alla cronologia.
Qui è possibile visualizzare i cambiamenti appena applicatim compresi i commenti configurati. Una volta che il database è pronto, è possibile accedervi facendo clic sul pulsante Collegati.
Se il tuo progetto Odoo.sh è configurato per l’installazione automatica del modulo, lo visualizzerai direttamente tra le app del database. Altrimenti, sarà disponibile tra le app da installare.
In seguito, puoi giocare con il modulo, creare nuovi record e provare funzionalità e pulsanti.
Testare con i dati di produzione¶
È necessario avere a disposizione un database di produzione per questa fase. È possibile crearne uno.
Una volta testato il modulo in un build di sviluppo con dati demo, se sei pronto puoi testarlo con i dati di produzione utilizzando un ramo di staging.
Le tue opzioni:
rendere il ramo di sviluppo un ramo di staging, trascinandolo e rilasciandolo nel titolo della sezione staging;
unire il ramo con un ramo di staging esistente, trascinandolo e rilasciandolo nel ramo di staging desiderato.
Inoltre, puoi anche utilizzare il comando git merge
per unire i rami.
Questo porterà alla creazione di un nuovo build di staging che duplicherà il database di produzione e lo farà funzionare utilizzando un server aggiornato con le ultime modifiche del ramo.
Una volta che il database è pronto, puoi eseguire l’accesso utilizzando il pulsante Collegati.
Installare il modulo¶
Il tuo modulo non verrà installato automaticamente, è necessario installarlo dal menu delle app. In realtà, lo scopo del build di staging è testare il comportamento delle modifiche perché applicate alla produzione e nella tua produzione non vuoi che un modulo venga installato automaticamente ma su richiesta.
Il tuo modulo potrebbe non apparire direttamente tra le app da installare e per questo è necessario prima aggiornare l’elenco:
attivare la modalità sviluppatore;
nel menu delle app, fai clic sul pulsante Aggiorna elenco app;
nella finestra di dialogo che appare, fai clic sul pulsante Aggiorna.
In seguito, il modulo apparirà nell’elenco di app disponibili.
Distribuire in produzione¶
Una volta testato il modulo con i dati di produzione in un ramo di staging e constatato il corretto funzionamento, puoi unire il tuo ramo a quello di produzione.
Trascina e rilascia il ramo di staging nel ramo di produzione.
Inoltre, puoi anche utilizzare il comando git merge
per unire i rami.
L’azione unirà le ultime modifiche al ramo di staging nel ramo di produzione e aggiornerà il server di produzione con le ultime modifiche.
Una volta che il database è pronto, puoi eseguire l’accesso utilizzando il pulsante Collegati.
Installare il modulo¶
Il tuo modulo non verrà installato automaticamente, devi installarlo manualmente come spiegato nella sezione in alto riguardo l’installazione del modulo in database di staging.
Aggiungere una modifica¶
La sezione spiega come aggiungere una modifica al modulo aggiungendo un nuovo campo in un modello e distribuirlo.
- Dall’editor di Odoo.sh:
sfoglia la cartella del modulo ~/src/user/my_module;
in seguito, apri il file models/models.py.
- Oppure, dal computer:
utilizza il browser di file a tua scelta per sfogliare la cartella del modulo ~/src/odoo-addons/my_module;
in seguito, apri il file models/models.py utilizzando l’editor a tua scelta come Atom, Sublime Text, PyCharm, vim, …
In seguito, dopo il campo descrizione
description = fields.Text()
Aggiungi un campo Data/Ora
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
In seguito, apri il file views/views.xml.
Dopo
<field name="value2"/>
Aggiungi
<field name="start_datetime"/>
These changes alter the database structure by adding a column in a table, and modify a view stored in database.
Al fine di applicare le modifiche a database come il tuo database di produzione, è necessario aggiornare il modulo.
Se vuoi che l’aggiornamento venga eseguito automaticamente dalla piattaforma Odoo.sh quando applichi le modifiche, è necessario aumentare la versione del modulo nel manifesto corrispondente.
Apri il modulo del manifesto __manifest__.py.
Sostituire
'version': '0.1',
con
'version': '0.2',
La piattaforma individuerà l’aggiornamento della versione e attiverà l’aggiornamento del modulo a seguito della distribuzione della nuova revisione.
Sfoglia la cartella Git.
In seguito, da un terminale Odoo.sh:
$ cd ~/src/user/
Oppure dal terminale del computer:
$ cd ~/src/odoo-addons/
In seguito, fissa le modifiche di cui eseguire il commit
$ git add my_module
Esegui il commit delle modifiche
$ git commit -m "[ADD] my_module: add the start_datetime field to the model my_module.my_module"
Applica le modifiche:
Da un terminale Odoo.sh:
$ git push https HEAD:feature-1
Oppure dal terminale del computer:
$ git push
La piattaforma creerà un nuovo build per il ramo feature-1.
Una volta testate le modifiche è possibile unirle nel ramo di produzione, ad esempio trascinando e rilasciando il ramo nel ramo di produzione tramite l’interfaccia Odoo.sh. Man mano che aumenti la versione del modulo nel manifesto, la piattaforma aggiornerà automaticamente il modulo e il tuo nuovo campo sarà subito disponibile. Altrimenti, puoi aggiornare manualmente il modulo dall’elenco delle app.
Utilizzare una libreria Python esterna¶
Se vuoi utilizzare una libreria Python esterna, non installata per impostazione predefinita, puoi definire un file requirements.txt che elenca le librerie esterna da cui dipendono i tuoi moduli.
Nota
Non è possibile installare o aggiornare pacchetti di sistema su un database Odoo.sh (ad es. pacchetti apt). Tuttavia, in condizioni specifiche, i pacchetti possono essere valutati per l’installazione. Questo si applica anche a moduli Python che richiedono pacchetti di sistema per la compilazione e moduli Odoo di terze parti.
Le estensioni PostgreSQL non sono supportate su Odoo.sh.
Per maggiori informazioni, consulta le FAQ.
La piattaforma utilizzerà il file per installare automaticamente le librerie Python di cui il tuo progetto ha bisogno.
La funzionalità viene spiegata nella seguente sezione utilizzando la `libreria Unidecode<https://pypi.python.org/pypi/Unidecode>`_ nel tuo modulo.
Crea un file requirements.txt nella cartella radice del registro
Dall’editor di Odoo.sh, crea e apri il file ~/src/user/requirements.txt.
Oppure, dal tuo computer, crea e apri il file ~/src/odoo-addons/requirements.txt.
Aggiungi
unidecode
In seguito, utilizza la libreria nel modulo per eliminare accenti dai caratteri nel campo nome del modello ad esempio.
Apri il file models/models.py.
Prima
from odoo import models, fields, api
Aggiungi
from unidecode import unidecode
Dopo
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
Aggiungi
@api.model
def create(self, values):
if 'name' in values:
values['name'] = unidecode(values['name'])
return super(my_module, self).create(values)
def write(self, values):
if 'name' in values:
values['name'] = unidecode(values['name'])
return super(my_module, self).write(values)
L’aggiunta di una dipendenza Python richiede una versione del modulo più grande per far sì che la piattaforma possa installarlo.
Modifica il manifesto del modulo __manifest__.py
Sostituire
'version': '0.2',
con
'version': '0.3',
Fissa ed esegui il commit delle modifiche:
$ git add requirements.txt
$ git add my_module
$ git commit -m "[IMP] my_module: automatically remove special chars in my_module.my_module name field"
In seguito, applica le modifiche:
In un terminale Odoo.sh:
$ git push https HEAD:feature-1
Nel terminale del tuo computer:
$ git push