[Twisted-web] Nevow FAQ proposal

Donovan Preston twisted-web@twistedmatrix.com
Tue, 30 Mar 2004 14:04:35 -0500


On Mar 29, 2004, at 10:20 PM, Michal Pasternak wrote:

> Hello,
>
> below is my proposal for a Nevow-newbie FAQ.
>
> The only problem is, someone has to answer them, but I belive you can 
> do
> that ;)
>
> 1. How could I change the way the form is displayed? Edit freeform.py? 
> Are
>    there any other alternatives?
>
>    Eg. I'd like to have each form enclosed in <table>, each field is a 
> row in
>    form of <tr><td align=right>label: </td><td> field </td></tr>

The original goal was to have the default renderers use patterns and 
slots so the template can provide a skin. The implementation hard coded 
the skin right into the renderers for expediency, and to make the code 
as easy as possible for others to understand. Since freeform is already 
difficult to understand, I have been reluctant to add this extra level 
of indirection.

Another approach is to write your own adapters and register them 
instead of the freeform adapters for rendering.

> 2. What good is formless.Group for?

It groups multiple forms (bindings) into a single form... you won't 
ever really use it directly. You might find it useful if you want to 
call multiple methods as a result of one form posting, but only want to 
do so if all method argument validation passes.

> 3. How can I have a bunch of text fields in a one field? For example, 
> I'd like
>    to create a date entry field - 4 digits in one field, and 2 digits 
> per next
>    2 fields, and I'd like it to display in one line, separated by 
> dashes.
>
>    Could I somehow group a few formless.Integer fields in one line and
>    separate them by dashes, or should I create a totally new field 
> type (just
>    like the fields in freeform.py are reated) ?

You should write a new Typed, such as Date, and then write a new 
ITypedRenderer adapter which renders the field however you like. You 
can subclass BaseInputRenderer and just override input to return just 
the fields, and not the label or description.

> 4. What does formless.Table do?

Nothing. It should be removed.

dp