miziodel

qualche nota su Maurizio Delmonte, il web e tutto..

permalink

Aggiornare i valori a una form z3c.form

z3c.form è una libreria capace di costruire da codice le form web di cui abbiamo bisogno in ambiente python/zope.

Molti pacchetti più specializzati ne fanno uso, anche in ambito Plone, mediante plone.z3cform. Per iniziare ad utilizzare plone.z3cform suggerisco di usare il tutorial scritto da Daniel Nouri su plone.org: http://plone.org/documentation/how-to/easy-forms-with-plone.

Fatto il preambolo, ecco il problema: come impostare dei valori nei widget del form prendendoli magari da una querystring impostata?

la mia soluzione, mettere nella classe che eredita da form.Form questo metodo:

def update(self):
  # lascio costruire i widget
self.updateWidgets() # ottengo i valori da preimpostare dalla querystring for k,v in self.request.form.items():
wdg = self.widgets.get(k)
if wdg:
wdg.value = v
# aggiorno il widget se ne ha bisogno per il rendering
if IChoice.providedBy(wdg.field):
wdg.update()
# aggiorno le action e le eseguo
self.updateActions()
self.actions.execute()

Che ne dite? C’è un modo più pulito di farlo?

permalink

What’s wrong is the abuse of the WSGI specification to sneak around Python-objects because your middleware really isn’t middleware–it’s part of the application!

Abuse is like a casino; the house always wins.

It’s All Wrong - Malthe Borch