Commit fd0c3656 authored by Joseph Kocherhans's avatar Joseph Kocherhans
Browse files

[1.1.X] Fixed #11860. Changed NullBooleanSelect's _has_changed method to...

[1.1.X] Fixed #11860. Changed NullBooleanSelect's _has_changed method to repect differences between None and False. Backport of [12523] from trunk.


git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@12524 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent cda48e9f
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -454,9 +454,13 @@ class NullBooleanSelect(Select):
                False: False}.get(value, None)

    def _has_changed(self, initial, data):
        # Sometimes data or initial could be None or u'' which should be the
        # same thing as False.
        return bool(initial) != bool(data)
        # For a NullBooleanSelect, None (unknown) and False (No)
        # are not the same
        if initial is not None:
            initial = bool(initial)
        if data is not None:
            data = bool(data)
        return initial != data

class SelectMultiple(Select):
    def render(self, name, value, attrs=None, choices=()):
+14 −0
Original line number Diff line number Diff line
@@ -530,6 +530,20 @@ Choices can be nested one level in order to create HTML optgroups:
<option value="2">Yes</option>
<option value="3" selected="selected">No</option>
</select>
>>> w._has_changed(False, None)
True
>>> w._has_changed(None, False)
True
>>> w._has_changed(None, None)
False
>>> w._has_changed(False, False)
False
>>> w._has_changed(True, False)
True
>>> w._has_changed(True, None)
True
>>> w._has_changed(True, True)
False

""" + \
r""" # [This concatenation is to keep the string below the jython's 32K limit].