From 714161c8642646f1f617436479313ca49c71b5c8 Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@rd.io>
Date: Fri, 19 Apr 2013 10:58:29 -0700
Subject: [PATCH] Fix != operations on lazy objects.

---
 django/utils/functional.py                 | 1 +
 tests/utils_tests/test_simplelazyobject.py | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/django/utils/functional.py b/django/utils/functional.py
index 13aec9cb82..1592828c7f 100644
--- a/django/utils/functional.py
+++ b/django/utils/functional.py
@@ -346,6 +346,7 @@ class SimpleLazyObject(LazyObject):
     # care about this (especially in equality tests)
     __class__ = property(new_method_proxy(operator.attrgetter("__class__")))
     __eq__ = new_method_proxy(operator.eq)
+    __ne__ = new_method_proxy(operator.ne)
     __hash__ = new_method_proxy(hash)
     __bool__ = new_method_proxy(bool)       # Python 3
     __nonzero__ = __bool__                  # Python 2
diff --git a/tests/utils_tests/test_simplelazyobject.py b/tests/utils_tests/test_simplelazyobject.py
index 883e60aa81..f925e01eb6 100644
--- a/tests/utils_tests/test_simplelazyobject.py
+++ b/tests/utils_tests/test_simplelazyobject.py
@@ -152,3 +152,12 @@ class TestUtilsSimpleLazyObject(TestCase):
             SimpleLazyObject(None)
         finally:
             sys.settrace(old_trace_func)
+
+    def test_not_equal(self):
+        lazy1 = SimpleLazyObject(lambda: 2)
+        lazy2 = SimpleLazyObject(lambda: 2)
+        lazy3 = SimpleLazyObject(lambda: 3)
+        self.assertEqual(lazy1, lazy2)
+        self.assertNotEqual(lazy1, lazy3)
+        self.assertTrue(lazy1 != lazy3)
+        self.assertFalse(lazy1 != lazy2)