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)