Sure, I whipped up a test case. It's basically a qs without identity
and the following controller. The welcome.kid template includes
'${form.display(action=action,value=value)}' and that's about it.

Sorry about the formatting...

One other thing I don't understand. I use if_empty='' but when the text
boxes are empty I usually see None being returned... Just so you know,
this is my first attempt at using validators so my issue is probably
related to that...

Thanks,

Nicky
---
import logging

import cherrypy

import turbogears
from turbogears import controllers, expose, validate, redirect,
validators, error_handler
from turbogears.widgets import TextField, CheckBoxList, TableForm,
CompoundFormField

class MyMacroFilterFormValidator(validators.Schema):
    macro = validators.String(not_empty=False, if_empty=''),
    status =  validators.ForEach(validators.Int(), if_empty=[]),
    designer = validators.String(not_empty=False, if_empty=''),

class MyMacroFilterFormField(CompoundFormField):
    member_widgets = [ "macro","status", "designer"]
    template = """
<div xmlns:py="http://purl.org/kid/ns#";>
  <table border="1">
     <tr>
       <th>Macro Name</th>
       <th>Status</th>
       <th>Designer</th>
    </tr>
       <tr>
       <td>${display_field_for(macro)}</td>
       <td>${display_field_for(status)}</td>
       <td>${display_field_for(designer)}</td>
    </tr>
   </table>
</div>
    """
    def __init__(self, m_params={}, s_params={}, d_params={}, *args,
**kw):
        super(MyMacroFilterFormField,self).__init__(*args,**kw)
        self.macro = TextField("macro",
                                **m_params)
        self.status = CheckBoxList("status",
                                   options = [(0,'zero'),
(1,'one'),(2,'two')],
                                   **s_params)
        self.designer = TextField("designer",
                                  **d_params)

filter_form   = TableForm(
            name='form',
            submit_text='Search',
            fields=[MyMacroFilterFormField(name='filter',)],
            validator= MyMacroFilterFormValidator(),
            )
from val import json

log = logging.getLogger("val.controllers")

class Root(controllers.RootController):
    @expose(template="val.templates.welcome")
    def index(self):
        import time
        log.debug("Happy TurboGears Controller Responding For Duty")
        action = 'action'
        value=None
        return dict(now=time.ctime(), form=filter_form,  action=action,
value=value)

    def on_error(self, **kw):
        log.debug(">>> ON_ERROR : kw=%s", kw)
        redirect('/');

    @expose(template="val.templates.welcome")
    @error_handler(on_error)
    @validate(form=filter_form)
    def action(self, **kw):
        import time
        log.debug(">>> Happy TurboGears Controller ACTION Responding
For Duty")
        log.debug(">>> kw=%s", kw)
        filter = kw['filter']
        log.info(">>> psearch params: filter=%s ", filter)
        macro = filter['macro']
        status= filter['status']
        designer=  filter['designer']
        log.info(">>> status type=%s", type(status))
        log.info(">>> psearch params: macro=%s, status=%s, designer=%s
" ,
           macro,status,designer)
        value = dict(filter=dict(macro=macro,
status=status,designer=designer))
        action = 'action'
        return dict(now=time.ctime(), form=filter_form,  action=action,
value=value)
        import time
        log.debug(">>> Happy TurboGears Controller ACTION Responding
For Duty")
        log.debug(">>> kw=%s", kw)
        filter = kw['filter']
        log.info(">>> psearch params: filter=%s ", filter)
        macro = filter['macro']
        status= filter['status']
        designer=  filter['designer']
        log.info(">>> status type=%s", type(status))
        log.info(">>> psearch params: macro=%s, status=%s, designer=%s
" ,
           macro,status,designer)
        value = dict(filter=dict(macro=macro,
status=status,designer=designer))
        action = 'action'
        return dict(now=time.ctime(), form=filter_form,  action=action,
value=value)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~----------~----~----~----~------~----~------~--~---

Reply via email to