From 81c9d55c1e85159ef8041ad450e5a8e5e257af6e Mon Sep 17 00:00:00 2001 From: Jacek Tomaszewski Date: Fri, 11 Oct 2013 21:50:18 +0200 Subject: [PATCH] Make ClearableWidgetWrapper compatible with Django 1.6 (_has_changed). --- modeltranslation/forms.py | 6 ++++++ modeltranslation/widgets.py | 16 +++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/modeltranslation/forms.py b/modeltranslation/forms.py index 8e05ce0..8c8d855 100644 --- a/modeltranslation/forms.py +++ b/modeltranslation/forms.py @@ -21,3 +21,9 @@ class NullableField(object): if value is None: return value return super(NullableField, self).to_python(value) + + # Django 1.6 + def _has_changed(self, initial, data): + if (initial is None and data is not None) or (initial is not None and data is None): + return True + return super(NullableField, self)._has_changed(initial, data) diff --git a/modeltranslation/widgets.py b/modeltranslation/widgets.py index 663abaf..6b98186 100644 --- a/modeltranslation/widgets.py +++ b/modeltranslation/widgets.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals +from django import VERSION from django.forms.widgets import Media, Widget, CheckboxInput from django.utils.html import conditional_escape from django.utils.safestring import mark_safe @@ -84,13 +85,14 @@ class ClearableWidgetWrapper(Widget): return self.empty_value return self.widget.value_from_datadict(data, files, name) - def _has_changed(self, initial, data): - """ - Widget implementation equates ``None``s with empty strings. - """ - if (initial is None and data is not None) or (initial is not None and data is None): - return True - return self.widget._has_changed(initial, data) + if VERSION < (1, 6): # In Django 1.6 formfields should implement _has_changed + def _has_changed(self, initial, data): + """ + Widget implementation equates ``None``s with empty strings. + """ + if (initial is None and data is not None) or (initial is not None and data is None): + return True + return self.widget._has_changed(initial, data) def clear_checkbox_name(self, name): """