[Webware] FormKit - dynamic fields problem

JZ cy.fbp.eryvtvne at ncbybtrglxn.pbz
Mon Jan 12 09:28:58 EST 2004


I use Webware and FormKit. I have a problem with dynamic added field
to the form. The following code creates one input field and two submit
buttons. I would like to add more (up to 4) input fields after
pressing "more" button. It does not work and I have no idea how to
solve it.

import re
from WebKit.Page import Page
from FormKit import Form, Fields, Validators
from FormKit.FormKitMixIn import FormKitMixIn

class DynamicProblem(FormKitMixIn, Page):
    
    def __init__(self):
        Page.__init__(self)
        notEmpty = Validators.NotEmpty() 
        f = self.form = Form.Form()
        self.addForm(f)
        f.addField(Fields.TextField('msg', validators=[notEmpty]))
        f.addField(Fields.WebKitSubmitButton('more'))
        f.addField(Fields.WebKitSubmitButton('send'))

    def sleep(self, trans):
        self.resetForms() 
        Page.sleep(self, trans)

    def writeHTML(self):
        self.write(self.form.dump())

    def extendForm(self):
        notEmpty = Validators.NotEmpty() 
        f = self.form
        nr =  len(filter(lambda x:re.match(r'^msg',x),
                         self.form.values().keys()))
        if nr < 4:
            f.addField(Fields.TextField('msg%d' % nr,
                                        validators=[notEmpty]))
        
    def actions(self):
        return  ['more', 'send']

    def more(self):
        if  self.form.isSuccessful():
            self.extendForm()

    def send(self):
        if  self.form.isSuccessful():
            pass

--
JZ




More information about the Python-list mailing list