TODOs

  • [_] Easier JQuery UI theme changing.

  • [X] Put input element on left hand side of label in

    RadioChoiceWidget and CheckboxChoiceWidget.

  • [_] RadioChoiceWidget doesn’t work when used multiple times in a

    page.

  • [X] Make error message translations possible.

  • [_] Progressive form validation (show validation errors as you

    type).

  • [X] Date widget with picker (see deform.widget.DateInputWidget).

  • [_] Time widget with picker.

  • [_] DateTime widget with pickers.

  • [X] Add a single-select widget.

  • [X] Add a multi-select checkbox widget.

  • [X] Add a “combo-box” widget (serviced by AutoComplete text box)

    o Mixes free-form input with a drop-down.

  • [_] Add a multi-select widget using dual lists.

  • [X] Add “fixed-lentgh” string widgets (done by using jquery.maskedinput in

    text input field)

    o E.g., in parts of an SSN, filling in all digits in the first

    part’s field jumps automatically to the second.

  • [_] Add a country / postal code widget

    o Does a lookup and shows city and state / province.

  • [_] Add an ISBN widget.

    o Does a lookup and shows author, title, etc..

  • [X] Make forms automagically put the cursor into the first field of a form.

  • [X] Readonly widget variants

  • [X] Use case: require (email or phonenumber; see

    require_one_or_another in deformdemo).

  • [X] Add a convention that allows a widget to specify the (logical)

    resources it requires (e.g. [“foo.css”, “jquery”]). Add an API that allows you to retrieve all the logical resources required by all widgets that are part of a form.

  • [X] Provide a lame default widget for tuples in order to avoid ``

    File “/Users/...deform/widget.py”, line 92, in serialize raise NotImplementedError`` during serialization or provide a better error message (maybe a subclass of Widget that spits out a more informative error message). (used TextInputCSV widget).

  • [ ] Somehow prevent schemas that have sequence types (tuples and

    sequences) that have no schema children from reaching the point where we try to serialize them, as a hapless user will wind up with a `` File “/Users/...../deform/widget.py”, line 773, in serialize item_field = field.children[0]`` exception instead of a more sensible error message.

  • [ ] Allow for single-field readonly renderings (e.g. on an add form,

    the name must be provided, on an edit form the name cannot be provided).

  • [ ] Make deform.widget.RichText render only on oid specific element

    in templates.

  • [ ] Work out RichTextWidget default height and width and overrides

    for them, then document how to do so.

  • [ ] Add placeholder text to

    deform.widget.AutocompleteinputWidget

  • [ ] CSRF:

    <DanielHolth> I came up with a repoze.bfg.formish CSRF solution that I don’t entirely hate. The token stored on the FormController is hmac(‘’.join(user_id, str(self.__class__), request.url, csrf_secret), session_identifier). The main form template inserts the token into the form if hasattr(form.controller.csrf_token) and it’s checked with a decorator on the action method. <DanielHolth> I tried setting the token as a default value for a String() but then the form will compute the correct csrf token when submitted without that key. <wiggy> I use a CSRForm class which is derived from formish.Form and every user gets a secret which is reset on login

  • Apply patches:

  • [ ] Spinner for upload widget.

  • [ ] Focus first element in node when sequence item is added.

  • [ ] http://deformdemo.repoze.org/multiple_forms/ has weird styling.

  • [X] Date parts widget renders error “Incomplete” if all blank.

    should be “Required” for consistency with others

Topics Needing Documentation

  • Associating a Colander type with a new default widget type.
  • Changing the close button image.
  • Interfield validation.
  • Explain widget_maker.

Documentation Done, But Could be Better

  • The Form class (and thee Button class) explanations.
  • Multiple forms on the same page (in Form API docs only).
  • FileUploadWidget tmpstore (in FileUploadWidget API docs only).
  • Form post target changing (only in API docs)
  • Internationalization (weak chapter)
  • Creating a new schema type (punts to Colander docs in basic.rst)