Loading django/contrib/auth/forms.py +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ class ReadOnlyPasswordHashField(forms.Field): # render an input field. return initial def _has_changed(self, initial, data): def has_changed(self, initial, data): return False Loading django/contrib/auth/tests/test_forms.py +1 −1 Original line number Diff line number Diff line Loading @@ -533,4 +533,4 @@ class ReadOnlyPasswordHashTest(TestCase): def test_readonly_field_has_changed(self): field = ReadOnlyPasswordHashField() self.assertFalse(field._has_changed('aaa', 'bbb')) self.assertFalse(field.has_changed('aaa', 'bbb')) django/contrib/gis/forms/fields.py +1 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ class GeometryField(forms.Field): return geom def _has_changed(self, initial, data): def has_changed(self, initial, data): """ Compare geographic value of data with its initial value. """ try: Loading django/contrib/gis/tests/geoadmin/tests.py +1 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ class GeoAdminTest(TestCase): """ geoadmin = admin.site._registry[City] form = geoadmin.get_changelist_form(None)() has_changed = form.fields['point']._has_changed has_changed = form.fields['point'].has_changed initial = Point(13.4197458572965953, 52.5194108501149799, srid=4326) data_same = "SRID=3857;POINT(1493879.2754093995 6894592.019687599)" Loading django/forms/fields.py +15 −9 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ from django.forms.widgets import ( from django.utils import formats from django.utils.encoding import smart_text, force_str, force_text from django.utils.ipv6 import clean_ipv6_address from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning, RenameMethodsBase from django.utils import six from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit from django.utils.translation import ugettext_lazy as _, ungettext_lazy Loading @@ -45,7 +45,13 @@ __all__ = ( ) class Field(object): class RenameFieldMethods(RenameMethodsBase): renamed_methods = ( ('_has_changed', 'has_changed', RemovedInDjango20Warning), ) class Field(six.with_metaclass(RenameFieldMethods, object)): widget = TextInput # Default widget to use when rendering this type of Field. hidden_widget = HiddenInput # Default widget to use when rendering this as "hidden". default_validators = [] # Default set of validators Loading Loading @@ -185,7 +191,7 @@ class Field(object): return self.limit_choices_to() return self.limit_choices_to def _has_changed(self, initial, data): def has_changed(self, initial, data): """ Return True if data differs from initial. """ Loading Loading @@ -629,7 +635,7 @@ class FileField(Field): return initial return data def _has_changed(self, initial, data): def has_changed(self, initial, data): if data is None: return False return True Loading Loading @@ -744,7 +750,7 @@ class BooleanField(Field): if not value and self.required: raise ValidationError(self.error_messages['required'], code='required') def _has_changed(self, initial, data): def has_changed(self, initial, data): # Sometimes data or initial could be None or '' which should be the # same thing as False. if initial == 'False': Loading Loading @@ -779,7 +785,7 @@ class NullBooleanField(BooleanField): def validate(self, value): pass def _has_changed(self, initial, data): def has_changed(self, initial, data): # None (unknown) and False (No) are not the same if initial is not None: initial = bool(initial) Loading Loading @@ -906,7 +912,7 @@ class MultipleChoiceField(ChoiceField): params={'value': val}, ) def _has_changed(self, initial, data): def has_changed(self, initial, data): if initial is None: initial = [] if data is None: Loading Loading @@ -1084,14 +1090,14 @@ class MultiValueField(Field): """ raise NotImplementedError('Subclasses must implement this method.') def _has_changed(self, initial, data): def has_changed(self, initial, data): if initial is None: initial = ['' for x in range(0, len(data))] else: if not isinstance(initial, list): initial = self.widget.decompress(initial) for field, initial, data in zip(self.fields, initial, data): if field._has_changed(field.to_python(initial), data): if field.has_changed(field.to_python(initial), data): return True return False Loading Loading
django/contrib/auth/forms.py +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ class ReadOnlyPasswordHashField(forms.Field): # render an input field. return initial def _has_changed(self, initial, data): def has_changed(self, initial, data): return False Loading
django/contrib/auth/tests/test_forms.py +1 −1 Original line number Diff line number Diff line Loading @@ -533,4 +533,4 @@ class ReadOnlyPasswordHashTest(TestCase): def test_readonly_field_has_changed(self): field = ReadOnlyPasswordHashField() self.assertFalse(field._has_changed('aaa', 'bbb')) self.assertFalse(field.has_changed('aaa', 'bbb'))
django/contrib/gis/forms/fields.py +1 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ class GeometryField(forms.Field): return geom def _has_changed(self, initial, data): def has_changed(self, initial, data): """ Compare geographic value of data with its initial value. """ try: Loading
django/contrib/gis/tests/geoadmin/tests.py +1 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ class GeoAdminTest(TestCase): """ geoadmin = admin.site._registry[City] form = geoadmin.get_changelist_form(None)() has_changed = form.fields['point']._has_changed has_changed = form.fields['point'].has_changed initial = Point(13.4197458572965953, 52.5194108501149799, srid=4326) data_same = "SRID=3857;POINT(1493879.2754093995 6894592.019687599)" Loading
django/forms/fields.py +15 −9 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ from django.forms.widgets import ( from django.utils import formats from django.utils.encoding import smart_text, force_str, force_text from django.utils.ipv6 import clean_ipv6_address from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning, RenameMethodsBase from django.utils import six from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit from django.utils.translation import ugettext_lazy as _, ungettext_lazy Loading @@ -45,7 +45,13 @@ __all__ = ( ) class Field(object): class RenameFieldMethods(RenameMethodsBase): renamed_methods = ( ('_has_changed', 'has_changed', RemovedInDjango20Warning), ) class Field(six.with_metaclass(RenameFieldMethods, object)): widget = TextInput # Default widget to use when rendering this type of Field. hidden_widget = HiddenInput # Default widget to use when rendering this as "hidden". default_validators = [] # Default set of validators Loading Loading @@ -185,7 +191,7 @@ class Field(object): return self.limit_choices_to() return self.limit_choices_to def _has_changed(self, initial, data): def has_changed(self, initial, data): """ Return True if data differs from initial. """ Loading Loading @@ -629,7 +635,7 @@ class FileField(Field): return initial return data def _has_changed(self, initial, data): def has_changed(self, initial, data): if data is None: return False return True Loading Loading @@ -744,7 +750,7 @@ class BooleanField(Field): if not value and self.required: raise ValidationError(self.error_messages['required'], code='required') def _has_changed(self, initial, data): def has_changed(self, initial, data): # Sometimes data or initial could be None or '' which should be the # same thing as False. if initial == 'False': Loading Loading @@ -779,7 +785,7 @@ class NullBooleanField(BooleanField): def validate(self, value): pass def _has_changed(self, initial, data): def has_changed(self, initial, data): # None (unknown) and False (No) are not the same if initial is not None: initial = bool(initial) Loading Loading @@ -906,7 +912,7 @@ class MultipleChoiceField(ChoiceField): params={'value': val}, ) def _has_changed(self, initial, data): def has_changed(self, initial, data): if initial is None: initial = [] if data is None: Loading Loading @@ -1084,14 +1090,14 @@ class MultiValueField(Field): """ raise NotImplementedError('Subclasses must implement this method.') def _has_changed(self, initial, data): def has_changed(self, initial, data): if initial is None: initial = ['' for x in range(0, len(data))] else: if not isinstance(initial, list): initial = self.widget.decompress(initial) for field, initial, data in zip(self.fields, initial, data): if field._has_changed(field.to_python(initial), data): if field.has_changed(field.to_python(initial), data): return True return False Loading