Bookmark and Share

Autoformazione open source

Spesso mi sento rivolgere la domanda/accusa di come ci si possa documentare sugli argomenti che sviluppiamo ogni giorno...

by Maurizio Delmonte - 2008-12-02
Autoformazione open source

Vi presento un caso tipico, e spero significativo...

Contesto

Da mesi stiamo utilizzando i pacchetti che fanno capo a z3c.form per la costruzione dei form web. Si tratta di un pacchetto molto potente utilizzabile sia in Plone che in applicazioni Zope 3 pure.. in sintesi il 95% dell'implementazione necessaria a far funzionare form anche complessi viene realizzata in python, evitandoci di andare ad impazzire con i template.. un po' come si fa con Archetypes, ma senza che debba esistere un oggetto di supporto...

stamattina mi sono trovato a dover mostrare un pulsante solo se l'utente che vede la form ha un determinato permesso.. come fare?

Verso la soluzione

Non mi era ancora capitato questo caso, e non ricordo di aver visto codice di altri che lo facevano, così per prima cosa provo a sentire Davide, magari lui ha gia' risolto questo problema (preferisco non andare a chiedere su #plone a meno che non sia veramente qualcosa su cui sto impazzendo da tempo..).

Davide non ha avuto ancora l'occasione..

A questo punto immagino che deve essere un problema tipico, e che qualcuno deve averlo risolto: vado su google e cerco..

"z3c.form button permission".............

nulla :/

"z3c.form button visible".................

niente :(

insomma.. rinuncio a google, e mi rimetto a pensare ad un'altra strada più efficace: il codice!!

Vado a pescare il pacchetto z3c.form e lo carico nel mio IDE, che da un po' di tempo e' felicemente Textmate, ma una shell con grep avrebbe svolto funzione analoga.

Do uno sguardo ai file .txt della radice del pacchetto, e mi salta all'occhio un bel button.txt, lo apro fiducioso.. inizio a leggere (e voi mi chiederete, ma non lo avevi gia' letto prima di iniziare a usare z3c.form? evidentemente, ammesso questo, è passato troppo tempo...). Subito mi viene rivelata una cosa interessante, che mi da ulteriore fiducia: i pulsanti sono definiti a loro volta con un'interfaccia.. interessante e potente!

Bando alle ciance, il documento è troppo lungo e non so ancora cosa cercare: entriamo direttamente nel codice!

Uno sguardo al Codice non guasta!

Fiducioso apro button.py.

una scorsa alla mappa del modulo mi permette di individuare un bel metodo "update", che subito mi fa pensare al fatto che potrebbe celare la soluzione al mio problema..

Bingo!

Finalmente ho la parolina magica: condition!

In sostanza, "a che condizione vuoi che il pulsante venga mostrato?" eh.. vattelo a immaginare prima....

La soluzione

Fiducioso torno su google:

"z3c.form button condition"...

Voila'! Google mi ricorda che esiste un ottimo manuale su z3c.form, scritto dal nostro amico Paul Carduner... uno sguardo e il gioco è fatto!

Conclusione

Aime' gli strumenti e i concetti necessari alla nostra attività quotidiana sono un mare infinito da navigare, e "chiedere la parola che squadri da ogni lato" la specifica cosa di cui abbiamo bisogno in un certo istante non è sempre cosa proba verso la comunità.. in ogni caso, a saper cercare un minimo, tutto è scritto, e a volte si trova anche quel che a prima vista sembra non essere li'! :D

Dati alla mano:

  • tempo per trovare la soluzione: 10 min
  • tempo per scrivere questo post: 30 min
  • tempo risparmiato a evitarmi di ripetere sempre questa cosa, semplicemente indicando il link a questo post.. infinito! :D