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
-~----------~----~----~----~------~----~------~--~---