SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Sviluppare moduli per il client web

simone.orsi@abstract.it

/

abstract per OpenERP day IT 2013
Chi sono
Simone Orsi
Web developer
@ Abstract
Plone contributor
OpenERP contributor
Autore di:
report_openoffice / Aeroo
web_export_view
...
CHE COSA È UN
MODULO?
Cosa é un modulo?
In OpenERP é una cartella con dentro dei file
specifici:
○ __init__.py
○ __openerp__.py
○ file python (optional)
○ file xml, csv, etc (optional)
Nel mondo Python si chiamano “pacchetti”
(package) o EGGs, ma sono strutturati
diversamente: sono installabili, hanno una
versione, etc.
Cosa é un modulo “web”?
Sempre una cartella con dentro gli stessi file,,
più qualche altro:
○ __init__.py
○ __openerp__.py
○ file Python (optional)
○ file XML, CSV, etc (optional)
○
○
○

file Javascript (optional)
file CSS (optional)
file QWEB (xml) (optional)
Parametri del modulo web
●

js: lista di path a risorse statiche javascript
Es: [ 'static/src/js/lib.js', ]

●

css: lista di path a risorse statiche CSS
Es: [ 'static/src/css/color.css', ]

●

qweb : lista di path a risorse statiche di tipo XML
Es: ['static/src/xml/lib.xml']

●

web_preload: booleano che dichiara che il modulo
deve essere caricato all’avvio del server
ATTUALMENTE NON UTILIZZATO, PARE :S

NOTA: per la 6.1 questo parametro non esiste, bisogna
lanciare openerp con “--load=web,nome_modulo”
COME INIZIARE?
A mano
Procedura tipica:
1.

troviamo un modulo esistente

2.

facciamo copia/incolla (o “cp -r” ;))

3.

eliminiamo le cose che non ci servono

4.

aggiungiamo le cose che ci servono

5.

facciamo un bel find/replace

RISULTATO:
●

tempo perso

●

possibilitá di errore piú alta

●

ritorno al tempo della pietra :)
Bootstrap automatico
non sarebbe bello poter generare, con un
semplice comando, lo scheletro di un modulo a
partire da un template prestabilito?

La risposta é:

openerp_bootstrap
questo si… un modulo Python :)
OPENERP_BOOTSTRAP
Installazione
https://pypi.python.org/pypi/openerp_bootstrap/
> pip install openerp_bootstrap
Una volta installato, avrete a disposizione un nuovo comando:
paster e dei template relativi ad openerp.
Paster deriva da Paste, un pacchetto python che consente di
generare, per l’appunto, scheletri di progetti. Per elencare i
template:
> paster create --list-templates
I template: creare modulo standard
> paster create -t openerp_newmodule

Questo comando crea uno scheletro per un
modulo standard. Attualmente questo include
semplicemente un file __init__.py e un
__openerp__.py contenente i parametri inseriti in
fase di creazione.
I template: creare modulo web
> paster create -t openerp_webmodule

Questo comando crea uno scheletro per un
modulo web. Vediamo meglio cosa succede…
metadati

opzioni web
Il nostro nuovo modulo
Struttura

Contenuto JS

__openerp__.py
IL CLIENT WEB,
QUESTO SCONOSCIUTO
Client web: come funziona?
Il client web é dviso sostanzialmente in due parti: client e
server :)
“Lato client” é scritto in javascript.
Tutto ció che é “visibile” é sostanzialmente:
●

un “widget”, un oggetto che estende
instance.web.Widget (tipo la sidebar)
Ad ogni widget é associato un template.

●

una “view”, un oggetto che estende
instance.web.View (list, tree, form, search, etc)
Client web: come funziona?
● widget e view interagiscono col server
tramite chiamate AJAX

● “lato server” i controllers si occupano
di restituire i dati a tali chiamate
PERSONALIZZARE I
TEMPLATE
Come sono fatti i template?
I template del client web sono un
misto di:
HTML
<div class=”foo”>...</div>
e
QWEB
<t t-name="Login">
ASPETTA... QWEB???
Che cosa è QWEB?
È il sistema di templating del client web.
É un sistema molto modulare che consente di
estendere template esistenti (interamente o in
parte) e include anche l’internazionalizzazione.
Non ha applicazione al di fuori di OpenERP
quindi non ha una community di supporto e non
esiste una documentazione esaustiva (nel trunk
sta cambiando).
L’autore é Antony Lesuisse (OpenERP CTO).

**
Esempio template QWEB: login form
PERSONALIZZARE
TEMPLATE 2
Come trovare il template?
I template base di OpenERP stanno nel modulo
web “web” :)
Per la precisione li trovate nel seguente path:

web/addons/web/static/src/xml/base.xml

Purtroppo (o per fortuna) stanno tutti nello
stesso file :S
TIP: usate firebug (o altro inspector del browser) per trovare un
riferimento univoco nell’html e poi cercate dentro base.xml
Come sovrascrivere un template?
Esempio dal modulo web_nocreatedb:
T-EXTEND
seleziona il
template da
estendere

T-JQUERY
selettore jquery per
selezionare uno specifico
elemento (!!!)

T-OPERATION
operazione da effetturare
sull’elemento selezionato

OPZIONI
before
after
append
replace

web_nocreatedb/static/src/xml/web_nocreatedb.xml
PERSONALIZZARE IL
JAVASCRIPT
Trovare quello che ci serve
●

documentazione1 migliorata molto ma
ancora incompleta

●

nessuna lista di widget

●

o di composizione delle viste

TIP: usate firebug (o altro inspector del browser) per
trovare un riferimento univoco nell’html, cercate il
template contenente il riferimento, infine cercate nel JS il
widget che richiama quel template.

1

https://doc.openerp.com/trunk/web/
Estendere viste o widget
Esempio dal modulo web_export_view:

web_export_view/static/js/web_advanced_export.js
Estendere viste o widget 2
Esempio dal modulo web_export_view:

web_export_view/static/xml/web_advanced_export.xml
Creare viste o widget (trunk docs)
INTERAZIONE
CON IL SERVER
Controllers
La parte “lato server” del client web é gestita da
controllers.

I controllers non sono altro che dei metodi
Python che vengono “esposti” tramite una route
(o path).

Una route non é altro che un modo per definire
un URL, banalmente:
www.server.com/path/to/something
Creare nuovi controllers
Esempio dal modulo web_export_view:

web_export_view/controllers.py
Creare nuovi controllers (trunk docs)
Creare nuovi controllers
Esempio dal modulo web_export_view:

web_export_view/static/js/web_advanced_export.js
SUGGERIMENTI
Tips
●

greppare greppare greppare

●

guardare cosa fanno gli altri

●

cercare su stackoverflow
○

“How to start developing in web addons”
http://stackoverflow.com/a/11950556

●

cercare su OpenERP help
○

●

http://help.openerp.com/questions/

usare FireBug (o simili)
RIFERIMENTI
Qualche link utile
●

http://pypi.python.org/pypi/openerp_bootstrap/

●

https://github.com/simahawk/openerp_bootstrap

●

https://code.launchpad.net/~webaddons-coreeditors/web-addons/

●

https://doc.openerp.com/
DOMANDE?
Simone Orsi @simahawk
simone.orsi@abstract.it

Mais conteúdo relacionado

Semelhante a Sviluppare moduli per il client web

Introduzione a..django
Introduzione a..djangoIntroduzione a..django
Introduzione a..djangoLuca Forzutti
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitMaurizio Delmonte
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
 
php day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsphp day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsGaetano Giunta
 
CakePhp Linux Day Torino '09
CakePhp Linux Day Torino '09CakePhp Linux Day Torino '09
CakePhp Linux Day Torino '09Francesco Ronchi
 
La Gerarchia dei Temi WordPress
La Gerarchia dei Temi WordPressLa Gerarchia dei Temi WordPress
La Gerarchia dei Temi WordPressMarco De Sangro
 
Creare un tema personalizzato per wordpress
Creare un tema personalizzato per wordpressCreare un tema personalizzato per wordpress
Creare un tema personalizzato per wordpressGGDBologna
 
Sencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceSencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceGiuseppe Toto
 
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Marco Chiesi
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsKnowCamp
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...LucaGre
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicinodavide ficano
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 

Semelhante a Sviluppare moduli per il client web (20)

Introduzione a..django
Introduzione a..djangoIntroduzione a..django
Introduzione a..django
 
#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2
 
Laravel Framework PHP
Laravel Framework PHPLaravel Framework PHP
Laravel Framework PHP
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
 
Linuxday2013
Linuxday2013 Linuxday2013
Linuxday2013
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immagini
 
php day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsphp day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez components
 
TYPO3 CMS 7.6 - Le novita
TYPO3 CMS 7.6 - Le novitaTYPO3 CMS 7.6 - Le novita
TYPO3 CMS 7.6 - Le novita
 
CakePhp Linux Day Torino '09
CakePhp Linux Day Torino '09CakePhp Linux Day Torino '09
CakePhp Linux Day Torino '09
 
La Gerarchia dei Temi WordPress
La Gerarchia dei Temi WordPressLa Gerarchia dei Temi WordPress
La Gerarchia dei Temi WordPress
 
Creare un tema personalizzato per wordpress
Creare un tema personalizzato per wordpressCreare un tema personalizzato per wordpress
Creare un tema personalizzato per wordpress
 
TYPO3 CMS 8.0 - Le novità
TYPO3 CMS 8.0 - Le novitàTYPO3 CMS 8.0 - Le novità
TYPO3 CMS 8.0 - Le novità
 
Sencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceSencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codice
 
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more things
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 

Mais de Associazione Odoo Italia

15 Odoo come sistema di ticketing ed helpdesk avanzato​
15 Odoo come sistema di ticketing ed helpdesk avanzato​15 Odoo come sistema di ticketing ed helpdesk avanzato​
15 Odoo come sistema di ticketing ed helpdesk avanzato​Associazione Odoo Italia
 
14 Il borsino: un nuovo modo di gestire il flusso di acquisto
14 Il borsino: un nuovo modo di gestire il flusso di acquisto14 Il borsino: un nuovo modo di gestire il flusso di acquisto
14 Il borsino: un nuovo modo di gestire il flusso di acquistoAssociazione Odoo Italia
 
07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva
07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva
07 Fatturazione Elettronica (PA) e Conservazione SostitutivaAssociazione Odoo Italia
 
04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda
04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda
04 OdooPLM per organizzare la documentazione tecnica di tutta l'aziendaAssociazione Odoo Italia
 
03 Estensione delle proprietà di Odoo per la generazione di preventivi complessi
03 Estensione delle proprietà di Odoo per la generazione di preventivi complessi03 Estensione delle proprietà di Odoo per la generazione di preventivi complessi
03 Estensione delle proprietà di Odoo per la generazione di preventivi complessiAssociazione Odoo Italia
 
01 CRM e Social media marketing intelligence con Odoo
01 CRM e Social media marketing intelligence con Odoo01 CRM e Social media marketing intelligence con Odoo
01 CRM e Social media marketing intelligence con OdooAssociazione Odoo Italia
 

Mais de Associazione Odoo Italia (20)

201607 03 - odoo 8.0
201607 03 - odoo 8.0201607 03 - odoo 8.0
201607 03 - odoo 8.0
 
Le licenze software ed affini
Le licenze software ed affiniLe licenze software ed affini
Le licenze software ed affini
 
Gestione Magazzino con Odoo
Gestione Magazzino con OdooGestione Magazzino con Odoo
Gestione Magazzino con Odoo
 
17 Quickorder e YAPOS - yet another pos
17 Quickorder e YAPOS - yet another pos17 Quickorder e YAPOS - yet another pos
17 Quickorder e YAPOS - yet another pos
 
16 ​Odoo e test automatici
16 ​Odoo e test automatici16 ​Odoo e test automatici
16 ​Odoo e test automatici
 
15 Odoo come sistema di ticketing ed helpdesk avanzato​
15 Odoo come sistema di ticketing ed helpdesk avanzato​15 Odoo come sistema di ticketing ed helpdesk avanzato​
15 Odoo come sistema di ticketing ed helpdesk avanzato​
 
14 Il borsino: un nuovo modo di gestire il flusso di acquisto
14 Il borsino: un nuovo modo di gestire il flusso di acquisto14 Il borsino: un nuovo modo di gestire il flusso di acquisto
14 Il borsino: un nuovo modo di gestire il flusso di acquisto
 
13 Open ERP Italia Network
13 Open ERP Italia Network13 Open ERP Italia Network
13 Open ERP Italia Network
 
11 Riconciliazione bancaria
11 Riconciliazione bancaria11 Riconciliazione bancaria
11 Riconciliazione bancaria
 
10 Gestione Cespiti​
10 Gestione Cespiti​10 Gestione Cespiti​
10 Gestione Cespiti​
 
09 API V8 for Dummies
09 API V8 for Dummies09 API V8 for Dummies
09 API V8 for Dummies
 
08 Fatturazione Elettronica P.A. con Odoo
08 Fatturazione Elettronica P.A. con Odoo08 Fatturazione Elettronica P.A. con Odoo
08 Fatturazione Elettronica P.A. con Odoo
 
07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva
07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva
07 Fatturazione Elettronica (PA) e Conservazione Sostitutiva
 
06 Odoo Community Association
06 Odoo Community Association06 Odoo Community Association
06 Odoo Community Association
 
05 OCA, da Oggi Contribuisco Anch'io!
05 OCA, da Oggi Contribuisco Anch'io!05 OCA, da Oggi Contribuisco Anch'io!
05 OCA, da Oggi Contribuisco Anch'io!
 
04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda
04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda
04 OdooPLM per organizzare la documentazione tecnica di tutta l'azienda
 
03 Estensione delle proprietà di Odoo per la generazione di preventivi complessi
03 Estensione delle proprietà di Odoo per la generazione di preventivi complessi03 Estensione delle proprietà di Odoo per la generazione di preventivi complessi
03 Estensione delle proprietà di Odoo per la generazione di preventivi complessi
 
02 Ritenuta d'acconto
02 Ritenuta d'acconto02 Ritenuta d'acconto
02 Ritenuta d'acconto
 
01 CRM e Social media marketing intelligence con Odoo
01 CRM e Social media marketing intelligence con Odoo01 CRM e Social media marketing intelligence con Odoo
01 CRM e Social media marketing intelligence con Odoo
 
OpenERP 7.0 - Sviluppo Moduli
OpenERP 7.0 - Sviluppo ModuliOpenERP 7.0 - Sviluppo Moduli
OpenERP 7.0 - Sviluppo Moduli
 

Sviluppare moduli per il client web

  • 1. Sviluppare moduli per il client web simone.orsi@abstract.it / abstract per OpenERP day IT 2013
  • 2. Chi sono Simone Orsi Web developer @ Abstract Plone contributor OpenERP contributor Autore di: report_openoffice / Aeroo web_export_view ...
  • 3. CHE COSA È UN MODULO?
  • 4. Cosa é un modulo? In OpenERP é una cartella con dentro dei file specifici: ○ __init__.py ○ __openerp__.py ○ file python (optional) ○ file xml, csv, etc (optional) Nel mondo Python si chiamano “pacchetti” (package) o EGGs, ma sono strutturati diversamente: sono installabili, hanno una versione, etc.
  • 5. Cosa é un modulo “web”? Sempre una cartella con dentro gli stessi file,, più qualche altro: ○ __init__.py ○ __openerp__.py ○ file Python (optional) ○ file XML, CSV, etc (optional) ○ ○ ○ file Javascript (optional) file CSS (optional) file QWEB (xml) (optional)
  • 6. Parametri del modulo web ● js: lista di path a risorse statiche javascript Es: [ 'static/src/js/lib.js', ] ● css: lista di path a risorse statiche CSS Es: [ 'static/src/css/color.css', ] ● qweb : lista di path a risorse statiche di tipo XML Es: ['static/src/xml/lib.xml'] ● web_preload: booleano che dichiara che il modulo deve essere caricato all’avvio del server ATTUALMENTE NON UTILIZZATO, PARE :S NOTA: per la 6.1 questo parametro non esiste, bisogna lanciare openerp con “--load=web,nome_modulo”
  • 8. A mano Procedura tipica: 1. troviamo un modulo esistente 2. facciamo copia/incolla (o “cp -r” ;)) 3. eliminiamo le cose che non ci servono 4. aggiungiamo le cose che ci servono 5. facciamo un bel find/replace RISULTATO: ● tempo perso ● possibilitá di errore piú alta ● ritorno al tempo della pietra :)
  • 9. Bootstrap automatico non sarebbe bello poter generare, con un semplice comando, lo scheletro di un modulo a partire da un template prestabilito? La risposta é: openerp_bootstrap questo si… un modulo Python :)
  • 11. Installazione https://pypi.python.org/pypi/openerp_bootstrap/ > pip install openerp_bootstrap Una volta installato, avrete a disposizione un nuovo comando: paster e dei template relativi ad openerp. Paster deriva da Paste, un pacchetto python che consente di generare, per l’appunto, scheletri di progetti. Per elencare i template: > paster create --list-templates
  • 12. I template: creare modulo standard > paster create -t openerp_newmodule Questo comando crea uno scheletro per un modulo standard. Attualmente questo include semplicemente un file __init__.py e un __openerp__.py contenente i parametri inseriti in fase di creazione.
  • 13. I template: creare modulo web > paster create -t openerp_webmodule Questo comando crea uno scheletro per un modulo web. Vediamo meglio cosa succede…
  • 15. Il nostro nuovo modulo Struttura Contenuto JS __openerp__.py
  • 16. IL CLIENT WEB, QUESTO SCONOSCIUTO
  • 17. Client web: come funziona? Il client web é dviso sostanzialmente in due parti: client e server :) “Lato client” é scritto in javascript. Tutto ció che é “visibile” é sostanzialmente: ● un “widget”, un oggetto che estende instance.web.Widget (tipo la sidebar) Ad ogni widget é associato un template. ● una “view”, un oggetto che estende instance.web.View (list, tree, form, search, etc)
  • 18. Client web: come funziona? ● widget e view interagiscono col server tramite chiamate AJAX ● “lato server” i controllers si occupano di restituire i dati a tali chiamate
  • 20. Come sono fatti i template? I template del client web sono un misto di: HTML <div class=”foo”>...</div> e QWEB <t t-name="Login">
  • 22. Che cosa è QWEB? È il sistema di templating del client web. É un sistema molto modulare che consente di estendere template esistenti (interamente o in parte) e include anche l’internazionalizzazione. Non ha applicazione al di fuori di OpenERP quindi non ha una community di supporto e non esiste una documentazione esaustiva (nel trunk sta cambiando). L’autore é Antony Lesuisse (OpenERP CTO). **
  • 25. Come trovare il template? I template base di OpenERP stanno nel modulo web “web” :) Per la precisione li trovate nel seguente path: web/addons/web/static/src/xml/base.xml Purtroppo (o per fortuna) stanno tutti nello stesso file :S TIP: usate firebug (o altro inspector del browser) per trovare un riferimento univoco nell’html e poi cercate dentro base.xml
  • 26. Come sovrascrivere un template? Esempio dal modulo web_nocreatedb: T-EXTEND seleziona il template da estendere T-JQUERY selettore jquery per selezionare uno specifico elemento (!!!) T-OPERATION operazione da effetturare sull’elemento selezionato OPZIONI before after append replace web_nocreatedb/static/src/xml/web_nocreatedb.xml
  • 28. Trovare quello che ci serve ● documentazione1 migliorata molto ma ancora incompleta ● nessuna lista di widget ● o di composizione delle viste TIP: usate firebug (o altro inspector del browser) per trovare un riferimento univoco nell’html, cercate il template contenente il riferimento, infine cercate nel JS il widget che richiama quel template. 1 https://doc.openerp.com/trunk/web/
  • 29. Estendere viste o widget Esempio dal modulo web_export_view: web_export_view/static/js/web_advanced_export.js
  • 30. Estendere viste o widget 2 Esempio dal modulo web_export_view: web_export_view/static/xml/web_advanced_export.xml
  • 31. Creare viste o widget (trunk docs)
  • 33. Controllers La parte “lato server” del client web é gestita da controllers. I controllers non sono altro che dei metodi Python che vengono “esposti” tramite una route (o path). Una route non é altro che un modo per definire un URL, banalmente: www.server.com/path/to/something
  • 34. Creare nuovi controllers Esempio dal modulo web_export_view: web_export_view/controllers.py
  • 35. Creare nuovi controllers (trunk docs)
  • 36. Creare nuovi controllers Esempio dal modulo web_export_view: web_export_view/static/js/web_advanced_export.js
  • 38. Tips ● greppare greppare greppare ● guardare cosa fanno gli altri ● cercare su stackoverflow ○ “How to start developing in web addons” http://stackoverflow.com/a/11950556 ● cercare su OpenERP help ○ ● http://help.openerp.com/questions/ usare FireBug (o simili)