This release changes the compatibility matrix for the project.
- We now support the following Django releases:
- Django 2.2
- Django 3.0
- We are also testing under the following Python versions:
- Python 3.6
- Python 3.7
- Python 3.8
No other significant changes in this release, but Django 1.11 and 2.1 are no longer supported.
This is the first release to be done under the Jazzband organization.
It collects several compatibility fixes to support Django 1.11 and 2.1.
- The currently tested versions of django-floppyforms is now:
- Django 1.11 and Python 2.7 or 3.6
- Django 2.1 and Python 3.6
In principle, we want to support any reasonable combination of Django and Python that still receives security releases, so if you are using an untested combination and hit an issue, bug reports are welcome.
Breaking Change:
Because Django's widgets now render through a form-specific template renderer, but floppyforms widgets use the standard rendering template (that doesn't automatically include Django's form templates), it is recommended to manuallyput Django's form template directory directly into your own template backend configuration.
If you don't add the following, you might experience issues mixing and matching vanilla widgets with floppyform widgets:
import django TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ ..., # your other template directories # django's own form template directories os.path.join(os.path.dirname(django.__file__), "forms/templates/", ], ... }, ... ]
- #176: Fix HTML validation for hidden textarea used with GIS widgets.
- #191 + #196 + #209: Support for Django 1.11 and 2.1. Thanks to MrJmad and dryice for patches.
- #194: Remove official support for Python 2.6 and Python 3.2.
- #204: Use HTTPS for OpenStreetMap links. Thanks to dryice for the patch.
- #171: Fix path to GIS widget images in
openlayers.html
template. The files coming with Django admin where used, but the naming changed in 1.9. We vendor these know to have better control over it. - #174: Support for setting your own Google Maps key in the
BaseGMapWidget
. See the documentation for details
- #169: Use the attributes
ClearableFileInput.initial_text
,ClearableFileInput.input_text
,ClearableFileInput.clear_checkbox_label
to determine the used text in the template. This was inconsistent so far with Django's behaviour.
- #167: Fix django-floppyforms'
CheckboxInput.value_from_datadict
which was inconsistent with Django's behaviour.
- #160: Django 1.9 support! Thanks to Jonas Haag for the patch.
- #156: The
min
,max
,step
attributes forDecimalField
andFloatField
were localized which can result in invalid values (rendering0.01
as0,01
in respective locales). Those attributes won't get localized anymore. Thanks to Yannick Chabbert for the fix.
- FloatField` now fills in
min
,max
, andstep
attributes to match the behaviour of DecimalField. Leaving out thestep
attribute would result in widgets that only allow integers to be filled in (HTML 5 default forstep
is1
).
- #148: Added support for custom
label_suffix
arguments in forms and fields. - The contents in
floppyforms/input.html
is now wrapped in a{% block content %}
for easier extending. - #70: DecimalField` now fills in
min
,max
, andstep
attributes for better client side validation. Use thenovalidate
attribute on your<form>
tag to disable HTML5 input validation in the browser. Thanks to caacree for the patch.
- Fixed source distribution to include all files in
floppyforms/static/floppyforms/openlayers
.
- Every widget is now using its own template. Previously all widgets that are
based on the HTML
<input>
tag used the genericfloppyforms/input.html
template. Now the widgets each have a custom element for easier customisation. For exampleCheckboxInput
now usesfloppyforms/checkbox.html
instead offloppyforms/input.html
. See Widgets reference for a complete list of available widgets and which templates they use. - Adjusting the SRIDs used in the GeoDjango widgets to conform with Django 1.7. Thanks to Tyler Tipton for the patch.
- Python 3.2 is now officially supported.
- Django 1.8 is now officially supported. django-floppyforms no longers triggers Django deprecation warnings.
- Adding OpenLayers distribution to django-floppyforms static files in order to better support HTTPS setups when GIS widgets are used (See #15 for more details).
- Fix:
python setup.py bdist_rpm
failed because of wrong string encodings in setup.py. Thanks to Yuki Izumi for the fix. - Fix: The
CheckboxInput
widget did detect different values in Python 2 when given'False'
andu'False'
as data. Thanks to @artscoop for the patch. - Fix:
MultipleChoiceField
can now correctly be rendered as hidden field by using theas_hidden
helper in the template. That was not working previously as there was no value set forMultipleChoiceField.hidden_widget
.
- DateInput widget renders hardcoded "%Y-%m-%d" format. We don't allow custom formats there since the "%Y-%m-%d" format is what browsers are submitting with HTML5 date input fields. Thanks to Bojan Mihelac for the patch.
- Adding
supports_microseconds
attribute to all relevant widget classes. Thanks to Stephen Burrows for the patch. - Using a property for
Widget.is_hidden
attribute on widgets to be in conformance with Django 1.7 default widget implementation. - The docs mentioned that the current
ModelForm
behaviour infloppyforms.__future__
will become the default in 1.3. This is postpone for one release and will be part of 1.4.
Subclasses of
floppyforms.models.ModelForm
did not convert widgets of form fields that were automatically created for the existing model fields into the floppyform variants. This is now changed, thanks to a patch by Stephen Burrows.Previously you had to set the widgets your self in a model form. For example you would write:
import floppyforms as forms class ProfileForm(forms.ModelForm): class Meta: model = Profile widgets = { 'name': forms.TextInput, 'url': forms.URLInput, ... }
Now this is done automatically. But since this is a kind-of backwardsincompatible change, you need to use a special import:
import floppyforms.__future__ as forms class ProfileForm(forms.ModelForm): class Meta: model = Profile
This feature will become the default behaviour in floppyforms 2.0.
See the documentation for more information: http://django-floppyforms.readthedocs.org/en/latest/usage.html#modelforms
If you added an attribute with value 1 to the attrs kwargs (e.g.
{'value': 1}
, you would get no attribute value in the rendered html (e.g.value
instead ofvalue="1"
). That's fixed now, thanks to Viktor Ershov for the report.All floppyform widget classes now take a
template_name
argument in the__init__
andrender
method. Thanks to Carl Meyer for the patch.
- Fix for Django 1.6
- Fix for GIS widgets on Django 1.4 and some versions of GEOS.
- Added GenericIPAddressField.
- Django 1.5 and Python 3.3 support added.
- Django 1.3 support dropped.
- GIS widgets switched to stable OpenLayers release instead of a dev build.
- Fixed
Textarea
widget template to work with a non-emptyTEMPLATE_STRING_IF_INVALID
setting. Thanks to Leon Matthews for the report. - Fixed context handling in widget rendering. It didn't take care of popping the context as often as it was pushed onto. This could cause strange behaviour in the template by leaking variables into outer scopes. Thanks to David Danier for the report.
- Added missing empty choice for selectboxes in
SelectDateWidget
. Thanks fsx999 for the report. IntegerField
now automatically passes itsmin_value
andmax_value
(if provided) to theNumberInput
widget.- Added basic support for
<datalist>
elements for suggestions inInput
widgets. date
,datetime
andtime
inputs are not localized anymore. The HTML5 spec requires the rendered values to be RFC3339-compliant and the browsers are in charge of localization. If you still want localized date/time inputs, use those provided by Django or override the_format_value()
method of the relevant widgets.
- cleaned up the behaviour of
attrs
- compatible with Django 1.3 and 1.4
<optgroup>
support in select widgetsSelect
widgets: renamedchoices
context variable tooptgroups
. This is backwards-incompatible: if you have custom templates forSelect
widgets, they need to be updated.get_context()
is more reliable- Added
form
,formrow
,formfield
,formconfig
andwidget
template tags. - Added template-based form layout system.
- Added ability to render widgets with the broader page context, for instance for django-sekizai compatibility.
- All widgets from Django have their floppyforms equivalent
- Added widgets for GeoDjango