What’s New In FormEncode 0 to 1.2.4¶
Contents
1.2.3¶
- Code repository moved to BitBucket at ianb/formencode.
- Allowed
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
formencode.compound.Any
shortcut validation when it gets an empty value (this same change had already been made toformencode.compound.All
). - Really updated German translation
- Fixes #2799713:
force_defaults=False and <select> fields, regarding
formencode.htmlfill.render()
. Thanks to w31rd0 for the bug report and patch to fix it.
1.2.2¶
- Added keyword argument
force_defaults
toformencode.htmlfill.render()
; when this is True (the default) this will uncheck checkboxes, unselect select boxes, etc., when a value is missing from the default dictionary. - Updated German translation
1.2.1¶
- Be more careful about
unicode(Invalid(...))
, to make sure it always returns unicode. - Fix broken
formencode.national
zip code validators. - In
formencode.national
only warn about the pycountry or TG requirement when creating validators that require them. - Fix another
formencode.htmlfill
error due to a field with no explicit value.
1.2¶
- Added
formencode.validators.IPAddress
, validating IP addresses, from Leandro Lucarella. - Added
formencode.api.Invalid.__unicode__()
- In
formencode.htmlfill
use a default encoding of utf8 when handling mixedstr
/unicode
content. Also do not modify<input type="image">
tags (previouslysrc
would be overwritten, for no good reason). - In
formencode.validators.Email
allow single-character domain names (like x.com). - Make
formencode.validators.FieldsMatch
give a normalInvalid
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). formencode.validators.Number
works withinf
float values (before it would raise a OverflowError).- The
tw
locale has been renamed to the more standardzh_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 informencode.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
, andsqlschema
. - 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
andNumber
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.
formencode.compound.All
does not handle empty values, instead relying on sub-validators to check for emptiness.- Fixed the
if_missing
attribute informencode.foreach.ForEach
; previously it would be the same list instance, so if you modified it then it would effect futureif_missing
values (reported by Felix Schwarz). - Added formatter to
formencode.htmlfill
, so you can use<form:error name="field_name" formatter="ignore" />
– 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
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, butrender()
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 likeInt.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
takesmin
andmax
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) andvalidators.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 anencoding
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=()
onvalidators.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 theInvalid
exception now.Invalid().unpack_errors(encode_variables=True)
now filters out None values (whichForEach
can produce even for keys with no errors).
0.6¶
String(min=1)
impliesnot_empty
(which seems more intuitive)- Added
list_char
anddict_char
arguments toInvalid.unpack_errors
(passed through tovariable_encode
) - Added a
use_datetime
option toTimeValidator
, which will cause it to usedatetime.time
objects instead of tuples. It was previously able to consume but not produce these objects. - Added
<form:iferror name="not field_name">
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¶
- 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<br>
. - When
not_empty=False
, empty is assumed to be allowed. ThusInt().to_python(None)
will now returnNone
.
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
toStringBool
(to go withbool
andvalidators.Bool
). Old alias still available. - Added
today_or_after
option tovalidators.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<input type="something-weird">
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""
orNone
, and will generally be converted None. - Added
accept_python
boolean to allFancyValidator
validators (which is most validators). This is a fixed version of the brokenvalidate_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
toSchema
objects, which ignore missing keys (where fields are present) when noif_missing
is provided for the field. - Renamed
validators.StateProvince.extraStates
toextra_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<form:error>
tag isn’t found for an error. - Added
if_key_missing
attribute toschema.Schema
, which will fill in any keys that are missing and pass them to the validator. FancyValidator
has changed, addingif_invalid_python
andvalidate_python
options (which also apply to all subclasses). Alsoif_empty
only applies toto_python
conversions.FancyValidator
now has astrip
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 aformencode.fieldstorage
module to wrap those instances in something a bit nicer. Addedvalidators.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.