turbogears2toscawidgets

ToscaWidgets - customize form


I'm using https://pypi.python.org/pypi/tgapp-resetpassword/0.1.5 which allows you to override the template used for the reset password page. Unfortunately, the actual form itself is included as a 'black box':

<div>
    ${reset_password_form.display(action=action)}
</div>

The form has been defined as a tw2.forms.TableForm which is not how I'd like to display it. Is it possible to have finer grain control e.g. insert custom html around each of the fields, or be more explicit about how to display certain fields?

E.g. I'd like to do something like the following (made up):

<div>
    <form ${reset_password_form.attrs} class="my-own-class-name">
      <py:for each="field in reset_password_form.fields">
         <div class="custom-class-here">
            <label for="${field.id}"> 
                ... some logic to possibly override default label else...
                ${field.default_label_text}
            </label>
            ${field.render_as_input_field()}
         </div>
      </py:for>
      <button type="submit">My own submit text</button>
    <form>
 </div>

Is this level of customization possible with ToscaWidgets without overriding things in Python?


Solution

  • As by resetpassword documentation you have a reset_password.reset_password_form option that can be used to specify an alternative tw2 form.

    You just need to put there the python path (like "resetpassword.lib.forms.ResetPasswordForm") of the form you would like to use in place of the default form.

    Then you own form can specify a custom template like https://gist.github.com/amol-/d2a08027d34a8c4dfa69