What's New In FormEncode 0 to 1.2.4 =================================== .. contents:: 1.2.4 ----- * Fix packaging issue with i18n files (from Juliusz Gonera) 1.2.3 ----- * Code repository moved to BitBucket at `ianb/formencode `_. * Allowed :class:`formencode.validators.UnicodeString` to use different encoding of input and output, or no encoding/decoding at all. * Fixes `#2666139 `_: DateValidator bug happening only in March under Windows in Germany :) * Don't let :class:`formencode.compound.Any` shortcut validation when it gets an empty value (this same change had already been made to :class:`formencode.compound.All`). * Really updated German translation * Fixes `#2799713 `_: force_defaults=False and `` tags (previously ``src`` would be overwritten, for no good reason). * In :class:`formencode.validators.Email` allow single-character domain names (like x.com). * Make :class:`formencode.validators.FieldsMatch` give a normal ``Invalid`` exception if you pass it a non-dictionary. Also treat all missing keys as the empty string (previously the first key was required and would raise KeyError). * :class:`formencode.validators.Number` works with ``inf`` float values (before it would raise a OverflowError). * The ``tw`` locale has been renamed to the more standard ``zh_TW``. * Added Japanese and Turkish translations. * Fixed some outdated translations and errors in Spanish and Greek translations. Translations now managed with `Babel `_. 1.1 --- * Fixed the ``is_empty()`` method in :class:`formencode.validators.FieldStorageUploadConverter`; previously it returned the opposite of the intended result. * Added a parameter to ``htmlfill.render()``: ``prefix_error``. If this parameter is true (the default) then errors automatically go before the input field; if false then they go after the input field. * Remove deprecated modules: ``fields``, ``formgen``, ``htmlform``, ``sqlformgen``, and ``sqlschema``. * Added ``formencode.htmlrename``, which renames HTML inputs. * In ``formencode.htmlfill``, non-string values are compared usefully (e.g., a select box with integer values). * The validators ``Int`` and ``Number`` both take min/max arguments (from Shannon Behrens). * Validators based on ``formencode.validators.FormValidator`` will not treat ``{}`` as an empty (unvalidated) value. * Some adjustments to the URL validator. * :class:`formencode.compound.All` does not handle empty values, instead relying on sub-validators to check for emptiness. * Fixed the ``if_missing`` attribute in :class:`formencode.foreach.ForEach`; previously it would be the same list instance, so if you modified it then it would effect future ``if_missing`` values (reported by Felix Schwarz). * Added formatter to :mod:`formencode.htmlfill`, so you can use ```` -- this will cause the error to be swallowed, not shown to the user. * Added ``formencode.validators.XRI`` for validation i-names, i-numbers, URLs, etc (as used in OpenID). * Look in ``/usr/share/locale`` for locale files, in addition to the normal locations. * Quiet Python 2.6 deprecation warnings. * Fix :class:`formencode.validators.URL`, which was accepting illegal characters (like newlines) and did not accept http://domain:PORT/ 1.0.1 ----- * ``chained_validators`` were removed from Schema somehow; now replaced and working. * Put in missing ``htmlfill.render(error_class=...)`` parameter (was documented and implemented, but ``render()`` did not pass it through). 1.0 --- * Added ``formencode.schema.SimpleFormValidator``, which wraps a simple function to make it a validator. * Changed the use of ``chained_validators`` in Schemas, so that all chained validators get run even when there are previous errors (to detect all the errors). * While something like ``Int.to_python()`` worked, other methods like ``Int.message(...)`` didn't work. Now it does. * Added Italian, Finnish, and Norwegian translations. 0.9 --- Backward incompatible changes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * The notion of "empty" has changed to include empty lists, dictionaries, and tuples. If you get one of these values passed into (or generated by) a validator with ``not_empty=True`` you can get exceptions where you didn't previously. Enhancements ~~~~~~~~~~~~ * Added support for Paste's MultiDict dictionary as input to Schema.to_python, by converting it to a normal dict via MultiDict.mixed. Previously MultiDicts wouldn't work with CompoundValidators (like ForEach) * Added encoding parameter to htmlfill, which will handle cases when mixed str and unicode objects are used (turning all str objects into unicode) * Include ``formencode.validators.InternationalPhoneNumber`` from W-Mark Kubacki. * ``validators.Int`` takes ``min`` and ``max`` options (from Felix Schwarz). * You can control the missing message (which by default is just "Missing Value") using the message ``"missing"`` in a validator (also from James Gardner). * Added ``validators.CADR`` (for IP addresses with an optional range) and ``validators.MACAddress`` (from Christoph Haas). Bug Fixes ~~~~~~~~~ * Be friendlier when loaded from a zip file (as with py2exe); previously only egg zip files would work. * Fixed bug in htmlfill when a document ends with no trailing text after the last tag. * Fix problem with HTMLParser's default unescaping routing, which only understood a very limited number of entities in attribute values. * Fix problem with looking up A records for email addresses. * ``validators.String`` now always returns strings. It also converts lists to comma-separated strings (no ``[...]``), and can encode unicode if an ``encoding`` parameter is given. Empty values are handled better. * ``validators.UnicodeString`` properly handles non-Unicode inputs. * Make ``validators.DateConverter`` serialize dates properly (from James Gardner). * Minor fix to setup.py to make FormEncode more friendly with zc.buildout. 0.7.1 ----- * Set ``if_missing=()`` on ``validators.Set``, as a missing value usually means empty for this value. * Fix for ``Email`` validator that searches A records in addition to MX records (from Jacob Smullyan). * Fixes for the ``es`` locale. 0.7 --- * **Backward compatibility issue**: Due to the addition of i18n (internationalization) to FormEncode, Invalid exceptions now have unicode messages. You may encounter unicode-related errors if you are mixing these messages with non-ASCII ``str`` strings. * gettext-enabled branch merged in * Fixes `#1457145: Fails on URLs with port numbers `_ * Fixes `#1559918 Schema fails to accept unicode errors `_ * ``from formencode.validators import *`` will import the ``Invalid`` exception now. * ``Invalid().unpack_errors(encode_variables=True)`` now filters out None values (which ``ForEach`` can produce even for keys with no errors). 0.6 --- * ``String(min=1)`` implies ``not_empty`` (which seems more intuitive) * Added ``list_char`` and ``dict_char`` arguments to ``Invalid.unpack_errors`` (passed through to ``variable_encode``) * Added a ``use_datetime`` option to ``TimeValidator``, which will cause it to use ``datetime.time`` objects instead of tuples. It was previously able to consume but not produce these objects. * Added ```` when you want to include text only when a field has no errors. * There was a problem installing 0.5.1 on Windows with Python 2.5, now resolved. 0.5.1 ----- * Fixed compound validators and ``not_empty`` (was breaking SQLObject's PickleCol) 0.5 --- * Added ``htmlfill.default_formatter_dict``, and you can poke new formatters in there to effective register them. * Added an ``escapenl`` formatter (nl=newline) that escapes HTML and turns newlines into ``
``. * When ``not_empty=False``, empty is assumed to be allowed. Thus ``Int().to_python(None)`` will now return ``None``. 0.4 --- * Fixed up all the documentation. * Validator ``__doc__`` attributes will include some automatically-appended information about all the message strings that validator uses. * Deprecated ``formencode.htmlform`` module, because it is dumb. * Added an ``.all_messages()`` method to all validators, primarily intended to be used for documentation purposes. * Changed preferred name of ``StringBoolean`` to ``StringBool`` (to go with ``bool`` and ``validators.Bool``). Old alias still available. * Added ``today_or_after`` option to ``validators.DateValidator``. * Added a ``validators.FileUploadKeeper`` validator for helping with file uploads in failed forms. It still requires some annoying fiddling to make work, though, since file upload fields are so weird. * Added ``text_as_default`` option to htmlfill. This treats all ```` elements as text fields. WHAT-WG adds weird input types, which can usually be usefully treated as text fields. * Make all validators accept empty values if ``not_empty`` is False (the default). "Empty" means ``""`` or ``None``, and will generally be converted None. * Added ``accept_python`` boolean to all ``FancyValidator`` validators (which is most validators). This is a fixed version of the broken ``validate_python`` boolean added in 0.3. Also, it defaults to true, which means that all validators will not validate during ``.from_python()`` calls by default. * Added ``htmlfill.render(form, defaults, errors)`` for easier rendering of forms. * Errors automatically inserted by ``htmlfill`` will go at the top of the form if there's no field associated with the error (raised an error in 0.3). * Added ``formencode.sqlschema`` for wrapping SQLObject classes/instances. See the docstring for more. * Added ``ignore_key_missing`` to ``Schema`` objects, which ignore missing keys (where fields are present) when no ``if_missing`` is provided for the field. * Renamed ``validators.StateProvince.extraStates`` to ``extra_states``, to normalize style. Bugfixes ~~~~~~~~ * When checking destinations, ``validators.URL`` now allows redirect codes, and catches socket errors and turns them into proper errors. * Fix typo in ``htmlfill`` * Made URL and email regular expressions a little more lax/correct. * A bunch of fixes to ``validators.SignedString``, which apparently was completely broken. 0.3 ----- * Allow errors to be inserted automatically into a form when using ``formencode.htmlfill``, when a ```` tag isn't found for an error. * Added ``if_key_missing`` attribute to ``schema.Schema``, which will fill in any keys that are missing and pass them to the validator. * ``FancyValidator`` has changed, adding ``if_invalid_python`` and ``validate_python`` options (which also apply to all subclasses). Also ``if_empty`` only applies to ``to_python`` conversions. * ``FancyValidator`` now has a ``strip`` option, which if true and if input is a string, will strip whitespace from the string. * Allow chained validators to validate otherwise-invalid forms, if they define a ``validate_partial`` method. The credit card validator does this. * Handle ``FieldStorage`` input (from file uploads); added a ``formencode.fieldstorage`` module to wrap those instances in something a bit nicer. Added ``validators.FieldStorageUploadConverter`` to make this conversion. * Added ``StringBoolean`` converter, which converts strings like ``"true"`` to Python booleans. Bugfixes ~~~~~~~~ * A couple fixes to ``DateConverter``, ``FieldsMatch``, ``StringBoolean``, ``CreditCardValidator``. * Added missing ``Validator.assert_string`` method. * ``formencode.htmlfill_schemabuilder`` handles checkboxes better. * Be a little more careful about how ``Invalid`` exceptions are created (catch some errors sooner). * Improved handling of non-string input in ``htmlfill``. Experiments ~~~~~~~~~~~ * Some experimental work in ``formencode.formgen``. Experimental, I say! * Added an experimental ``formencode.context`` module for dynamically-scoped variables.