[Grok-dev] Using templates on forms with multiple actions?
Jan-Wijbrand Kolman
janwijbrand at gmail.com
Fri Nov 13 04:31:04 EST 2009
Adam Summers wrote:
> Hi all,
>
> This is a simple question, I know, but I'm stumped.
>
> lets say I have a grok.Form as follows:
>
> class showData(grok.Form):
> grok.context(Restaurant)
> grok.name('vlh')
>
> form_fields = grok.Fields( f_date = schema.Date(title=u'Date'),
> f_daycount = schema.Int(title=u'Number of Days'))
>
> @grok.action('Calculate!')
> def calc(self, **data):
> return str(self.context.getStats(data['f_date'],'BREAKFAST',2))
>
> @grok.action('VLH!')
> def calc2(self, **data):
> return str(self.context.getVLHData(data['f_date'], 'BREAKFAST', data
> ['f_daycount']))
>
> As a result of the actions, I'm currently returning strings. But how
> can I use this calculated data in a template? Basically the results
> are lists of lists that I want to render in tables.
>
> Any help would be much appreciated..
Another idea would be:
* define a grok.template() for you form.
* have this template render the for (you can look in the "default"
templates of form for ideas how to do that).
* in this template you render results of the form submit when available.
Something like this (sketchy pseudo code):
view:
class ShowData(grok.Form):
grok.context(....)
grok.name(....)
grok.template('showdataform')
form_fields = ....
result = None
@grok.action('Do!')
def handle_do(self, **data):
self.result = ....
template:
<tal:block condition="python: view.result is not None">
....render result table...
</tal:block>
<tal:block condition="python: view.result is None">
....render form....
</tal:block>
Something like that.
regards,
jw
More information about the Grok-dev
mailing list