Odoo PyCharm install debug: differenze tra le versioni

Da PNLUG.
(Configurazione e debug di Odoo con PyCharm-community)
(Semplificata la procedura per poter lanciare il debug)
 
(4 versioni intermedie di un altro utente non mostrate)
Riga 1: Riga 1:
<big> Configurazione e debug di Odoo con PyCharm-community </big>
+
In questa pagina descriveremo come configurare e come usare il software di debug su Odoo, con ''PyCharm-community'' </big>
  
Dopo aver installato PyCharm sul vostro PC, ora potete seguire questo breve tutorial per creare e configurare un progetto Odoo con PyCharm:
+
Dopo aver installato ''PyCharm-community'' sul vostro PC, iniziamo a creare e configurare un progetto Odoo atraverso questa applicazione:
  
 
Poniamo che la nostra installazione di Odoo si trovi nella cartella:
 
Poniamo che la nostra installazione di Odoo si trovi nella cartella:
  
  '''/home/myuser/odoo-dev/OCB'''
+
  ''/home/myuser/odoo-dev/OCB''
  
Per creare un nuovo progetto ODOO, avviamo il programma PyCharm, chiudiamo eventuali progetti esistenti e selezioniamo '''File -> Create new project'''.  
+
Per creare un nuovo progetto ODOO, avviamo il programma ''PyCharm-community'', chiudiamo eventuali progetti esistenti che vengono visualizzati e selezioniamo '''File -> Create new project'''.  
  
Selezioniamo ''Create new project'' e come cartella di salvataggio dei lavori scegliamo la cartella che contiene lo script di avvio di ODOO; nel nostro caso:  
+
Selezioniamo ''Create new project'' e come cartella locale di salvataggio dei lavori, scegliamo la cartella che contiene lo script di avvio di ODOO; nel nostro caso scegliamo:
  /home/myuser/odoo-dev/OCB  
+
   
poi scegliamo l'interprete Python 2.7 e alla fine facciamo click su ''Create''.
+
''/home/myuser/odoo-dev/OCB''  
  
PyCharm ci avverte che la directory selezionata non è vuota e ci chiede se vogliamo attivare il progetto dai sorgenti esistenti. Facciamo click su ''Yes''.
+
successivamente scegliamo l'interprete Python 2.7 e alla fine selezioniamo ''Create''.
  
Arrivati a questo punto si avvia PyCharm con il nostro progetto e vengono creati i relativi files di configurazione che verranno salvati in una cartella di
+
''PyCharm-community'' ci avverte che la directory selezionata non è vuota e ci chiede se vogliamo attivare il progetto dai file sorgenti esistenti. Confermiamo e selezioniamo ''Yes''.<br>
nome ''.idea'' posizionata nella root del progetto; nel nostro caso la troveremo in:
+
/home/myuser/odoo-dev/OCB/.idea
+
  
Il lavoro ancora non è terminato, in quanto è necessario insegnare a PyCharm la posizione delle cartelle degli 'addons'' di Odoo e ad avviare il programma.
+
Arrivati a questo punto il programma ''PyCharm-community avvierà il nostro progetto e verranno creati i relativi files di configurazione, che verranno salvati in una cartella di nome ''.idea'' posizionata nella posizione ''root'' del progetto; nel nostro caso la troveremo in:
  
Andiamo su: '''File -> Settings''' e scegliamo la voce '''"Project: Project Structure"''', e facciamo click su '''"Add Content Root"''' per aggiungere le altre cartelle che fanno parte del progetto; nel nostro caso aggiungiamo cartelle degli ''addons'' che si trovano fuori dalla cartella principale; ad esempio:
+
''/home/myuser/odoo-dev/OCB/.idea''
  
/home/myuser/odoo-dev/addons<br />
+
La configurazione non è ancora terminata, in quanto è necessario insegnare a ''PyCharm-community'' il percorso delle cartelle contenenti gli 'addons'' di Odoo e successivamente ad avviare il programma.<br>
/home/myuser/odoo-dev/addons_ita<br />
+
  
Se lo desideriamo, possiamo aggiungere anche cartelle che non contengono dei sorgenti in python, come ad esempio files di configurazione, appunti ecc...; nel nostro esempio:
+
Per far questo, andiamo su: '''File -> Settings''' e selezioniamo la voce '''"Project: Project Structure"''', e facciamo click su '''"Add Content Root"''' per aggiungere le altre cartelle che fanno parte del progetto; nel nostro caso aggiungiamo cartelle degli ''addons'' che si trovano esternamente alla cartella principale del progetto; nel nostro esempio:
  
  /home/myuser/odoo-dev/extra_data
+
  ''/home/myuser/odoo-dev/addons''<br />
 +
''/home/myuser/odoo-dev/addons_ita''<br />
 +
<br>
  
Ora PyCharm sa dove trovare i file sorgenti di Odoo ed anche i file sorgenti dei moduli che andremo poi a sviluppare; non ci resta che insegnargli come lanciare Odoo.
+
Se lo desideriamo, possiamo aggiungere anche cartelle che non contengono dei sorgenti scritti in Python, (come ad esempio i files di configurazione, i nostri appunti, ecc...); nel nostro esempio aggiungiamo:
 +
 
 +
''/home/myuser/odoo-dev/extra_data''
 +
<br>
 +
 
 +
Ora ''PyCharm-community'' sa dove trovare i file sorgenti di Odoo ed anche i file sorgenti dei moduli che andremo poi a sviluppare; non ci resta che insegnargli come fare a lanciare Odoo.
  
 
Andiamo su '''Run -> Debug...''' e scegliamo '''"Edit configuration"''' ed andiamo sul tab '''Defaults -> Python'''
 
Andiamo su '''Run -> Debug...''' e scegliamo '''"Edit configuration"''' ed andiamo sul tab '''Defaults -> Python'''
  
Come script scegliamo:
+
Come script da eseguire, scegliamo:
  
  '''/home/myuser/odoo-dev/OCB/odoo-bin'''
+
  ''/home/myuser/odoo-dev/OCB/odoo-bin''
  
e come ''script parameters'' indichiamo il file di configurazione che usiamo per far partite Odoo da riga di comando.<br> (la gestione dei files di configurazione
+
e come ''script parameters'' indichiamo il file di configurazione che usiamo per far partite Odoo da riga di comando.<br>
di Odoo non fa parte di questo tutorial; diamo per scontato che ci sia già un file di configurazione).<br>  
+
(la gestione dei files di configurazione di Odoo '''non''' fa parte di questo tutorial; '''diamo per scontato che ci sia già un file di configurazione''').<br>  
 
Nel nostro caso il file utilizzato è:
 
Nel nostro caso il file utilizzato è:
  
 
  '''--config=/home/myuser/odoo-dev/extra_data/odoo.conf'''
 
  '''--config=/home/myuser/odoo-dev/extra_data/odoo.conf'''
 +
Nel riquadro laterale sx dell'interfaccia di pycharm troviamo la struttura ad albero del progetto.
 +
Entriamo nella directory OCB e apriamo:
  
Ora navighiamo nell'albero dei files del progetto ed apriamo:
+
''/home/myuser/odoo-dev/OCB/odoo-bin''
  
'''/home/myuser/odoo-dev/OCB/odoo-bin'''
+
Andiamo quindi nel menu Run ed apriamo '''Debug odoo-bin'''
 
+
<br>
Andiamo nel menu Run ed apriamo '''Debug odoo-bin'''
+
  
 
Se le configurazioni effettuate qui sopra sono andate a buon fine, la configurazione del progetto è completa; ora il nostro progetto è partito e lo verifichiamo andando a visualizzare con un browser, l'URL:  
 
Se le configurazioni effettuate qui sopra sono andate a buon fine, la configurazione del progetto è completa; ora il nostro progetto è partito e lo verifichiamo andando a visualizzare con un browser, l'URL:  
Riga 54: Riga 59:
 
  '''http://localhost:8069/'''
 
  '''http://localhost:8069/'''
  
Ora possiamo fermare lo script facendo click sul pulsante di arresto (quadratino rosso) sulla finestra di console di Run, posizionato nella parte bassa della schermata.
+
che rappresenta il nostro servizio Odoo avviato.<br>
  
Per ultima cosa vediamo se funziona il debugger. Supponiamo di aver installato il modulo "CRM Custom Fields" nella cartella:
+
Ora possiamo fermare lo script facendo click sul pulsante di arresto (quadratino rosso) sulla finestra di console di Run, posizionato nella parte bassa della schermata.<br>
  
'''/home/myuser/odoo-dev/addons/crm_custom_fields'''
+
Per ultima cosa vediamo se il debugger funziona correttamente. Supponiamo di aver installato il modulo ''"CRM Custom Fields"'' nella cartella:
  
Apriamo il file:
+
''/home/myuser/odoo-dev/addons/crm_custom_fields''
 +
 
 +
Con un editor di testi, Apriamo il file:
  
 
  '''/home/myuser/odoo-dev/addons/crm_custom_fields/models/ir_model.py'''
 
  '''/home/myuser/odoo-dev/addons/crm_custom_fields/models/ir_model.py'''
  
e mettiamo un ''breakpoint'' sulla riga 6 con scritto: '''_inherit = "ir.model"'''
+
e mettiamo un ''breakpoint'' sulla riga 6, con scritto: '''_inherit = "ir.model"'''
  
Se abbiamo fatto tutto per bene, dopo il riavvio del debugger, l'esecuzione si fermerà su quella riga e da li potremo ispezionare i valori delle variabili attive
+
Salviamo la modifica del file.<br>
in quel momento.
+
  
Ora siamo pronti a sviluppare i nostri moduli, usufruendo del potente ambiente di lavoro messoci a disposizione da PyCharm.
+
Se abbiamo fatto tutto per bene, dopo il riavvio del debugger, l'esecuzione del programma ''"CRM Custom Fields"'' si fermerà proprio su quella riga e da li potremo ispezionare i valori delle variabili attive in quel momento.<br>
  
'''Un ultima nota''':
+
Ora siamo pronti a sviluppare i nostri moduli, usufruendo del potente ambiente di lavoro messoci a disposizione da PyCharm.
 +
<br><br>
  
 +
'''Un'ultima nota''':
 
Python è un linguaggio dinamico che permette di modificare gli oggetti a runtime. Odoo utilizza questa potenzialità per attivare un particolare sistema
 
Python è un linguaggio dinamico che permette di modificare gli oggetti a runtime. Odoo utilizza questa potenzialità per attivare un particolare sistema
 
non standard di ereditarietà degli oggetti. Questo limita un po' le grandi potenzialità di PyCharm in fatto di auto completamento in fase di scrittura
 
non standard di ereditarietà degli oggetti. Questo limita un po' le grandi potenzialità di PyCharm in fatto di auto completamento in fase di scrittura
 
del codice, ma è un problema con cui si può e si deve convivere.
 
del codice, ma è un problema con cui si può e si deve convivere.
 
<br><br>
 
<br><br>

Versione attuale delle 10:36, 13 apr 2017

In questa pagina descriveremo come configurare e come usare il software di debug su Odoo, con PyCharm-community </big>

Dopo aver installato PyCharm-community sul vostro PC, iniziamo a creare e configurare un progetto Odoo atraverso questa applicazione:

Poniamo che la nostra installazione di Odoo si trovi nella cartella:

/home/myuser/odoo-dev/OCB

Per creare un nuovo progetto ODOO, avviamo il programma PyCharm-community, chiudiamo eventuali progetti esistenti che vengono visualizzati e selezioniamo File -> Create new project.

Selezioniamo Create new project e come cartella locale di salvataggio dei lavori, scegliamo la cartella che contiene lo script di avvio di ODOO; nel nostro caso scegliamo:

/home/myuser/odoo-dev/OCB 

successivamente scegliamo l'interprete Python 2.7 e alla fine selezioniamo Create.

PyCharm-community ci avverte che la directory selezionata non è vuota e ci chiede se vogliamo attivare il progetto dai file sorgenti esistenti. Confermiamo e selezioniamo Yes.

Arrivati a questo punto il programma PyCharm-community avvierà il nostro progetto e verranno creati i relativi files di configurazione, che verranno salvati in una cartella di nome .idea posizionata nella posizione root del progetto; nel nostro caso la troveremo in:

/home/myuser/odoo-dev/OCB/.idea

La configurazione non è ancora terminata, in quanto è necessario insegnare a PyCharm-community il percorso delle cartelle contenenti gli 'addons di Odoo e successivamente ad avviare il programma.

Per far questo, andiamo su: File -> Settings e selezioniamo la voce "Project: Project Structure", e facciamo click su "Add Content Root" per aggiungere le altre cartelle che fanno parte del progetto; nel nostro caso aggiungiamo cartelle degli addons che si trovano esternamente alla cartella principale del progetto; nel nostro esempio:

/home/myuser/odoo-dev/addons
/home/myuser/odoo-dev/addons_ita


Se lo desideriamo, possiamo aggiungere anche cartelle che non contengono dei sorgenti scritti in Python, (come ad esempio i files di configurazione, i nostri appunti, ecc...); nel nostro esempio aggiungiamo:

/home/myuser/odoo-dev/extra_data


Ora PyCharm-community sa dove trovare i file sorgenti di Odoo ed anche i file sorgenti dei moduli che andremo poi a sviluppare; non ci resta che insegnargli come fare a lanciare Odoo.

Andiamo su Run -> Debug... e scegliamo "Edit configuration" ed andiamo sul tab Defaults -> Python

Come script da eseguire, scegliamo:

/home/myuser/odoo-dev/OCB/odoo-bin

e come script parameters indichiamo il file di configurazione che usiamo per far partite Odoo da riga di comando.
(la gestione dei files di configurazione di Odoo non fa parte di questo tutorial; diamo per scontato che ci sia già un file di configurazione).
Nel nostro caso il file utilizzato è:

--config=/home/myuser/odoo-dev/extra_data/odoo.conf

Nel riquadro laterale sx dell'interfaccia di pycharm troviamo la struttura ad albero del progetto. Entriamo nella directory OCB e apriamo:

/home/myuser/odoo-dev/OCB/odoo-bin

Andiamo quindi nel menu Run ed apriamo Debug odoo-bin

Se le configurazioni effettuate qui sopra sono andate a buon fine, la configurazione del progetto è completa; ora il nostro progetto è partito e lo verifichiamo andando a visualizzare con un browser, l'URL:

http://localhost:8069/

che rappresenta il nostro servizio Odoo avviato.

Ora possiamo fermare lo script facendo click sul pulsante di arresto (quadratino rosso) sulla finestra di console di Run, posizionato nella parte bassa della schermata.

Per ultima cosa vediamo se il debugger funziona correttamente. Supponiamo di aver installato il modulo "CRM Custom Fields" nella cartella:

/home/myuser/odoo-dev/addons/crm_custom_fields

Con un editor di testi, Apriamo il file:

/home/myuser/odoo-dev/addons/crm_custom_fields/models/ir_model.py

e mettiamo un breakpoint sulla riga 6, con scritto: _inherit = "ir.model"

Salviamo la modifica del file.

Se abbiamo fatto tutto per bene, dopo il riavvio del debugger, l'esecuzione del programma "CRM Custom Fields" si fermerà proprio su quella riga e da li potremo ispezionare i valori delle variabili attive in quel momento.

Ora siamo pronti a sviluppare i nostri moduli, usufruendo del potente ambiente di lavoro messoci a disposizione da PyCharm.

Un'ultima nota: Python è un linguaggio dinamico che permette di modificare gli oggetti a runtime. Odoo utilizza questa potenzialità per attivare un particolare sistema non standard di ereditarietà degli oggetti. Questo limita un po' le grandi potenzialità di PyCharm in fatto di auto completamento in fase di scrittura del codice, ma è un problema con cui si può e si deve convivere.