From 8165c2cfd1922bb9d56a9e68e6456736acacf445 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Tue, 10 Sep 2013 14:23:31 -0400 Subject: [PATCH] Improved deprecation warning for change in form boolean values. refs #20684 Thanks jacob, jcd, and shai for the suggestions. --- django/forms/util.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/django/forms/util.py b/django/forms/util.py index 320a74e721..bb5bb8c2e4 100644 --- a/django/forms/util.py +++ b/django/forms/util.py @@ -23,11 +23,18 @@ def flatatt(attrs): The result is passed through 'mark_safe'. """ - if [v for v in attrs.values() if v is True or v is False]: - warnings.warn( - 'The meaning of boolean values for widget attributes will change in Django 1.8', - DeprecationWarning - ) + for attr_name, value in attrs.items(): + if type(value) is bool: + warnings.warn( + "In Django 1.8, widget attribute %(attr_name)s=%(bool_value)s " + "will %(action)s. To preserve current behavior, use the " + "string '%(bool_value)s' instead of the boolean value." % { + 'attr_name': attr_name, + 'action': "be rendered as '%s'" % attr_name if value else "not be rendered", + 'bool_value': value, + }, + DeprecationWarning + ) return format_html_join('', ' {0}="{1}"', sorted(attrs.items())) @python_2_unicode_compatible