]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fixed bug where :class:`.MutableDict` didn't report a change event
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 3 Jun 2013 22:23:23 +0000 (18:23 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 3 Jun 2013 22:24:00 +0000 (18:24 -0400)
when ``clear()`` was called.
[ticket:2730]

Conflicts:
doc/build/changelog/changelog_09.rst

doc/build/changelog/changelog_08.rst
lib/sqlalchemy/ext/mutable.py
test/ext/test_mutable.py

index ec0027e736c151a10a1935b35b50feb056fde882..94ada9ac59f87876cf2705ed003f07d5ee3ca78b 100644 (file)
@@ -6,6 +6,13 @@
 .. changelog::
     :version: 0.8.2
 
+    .. change::
+        :tags: bug, ext, orm
+        :tickets: 2730
+
+        Fixed bug where :class:`.MutableDict` didn't report a change event
+        when ``clear()`` was called.
+
     .. change::
         :tags: bug, sql
         :tickets: 2738
index b1b851f7231c2229c1d1bfe333d511fd62e0cd05..ca27f172f35af4454650327a952a7b88fedb1ea2 100644 (file)
@@ -616,6 +616,10 @@ class MutableDict(Mutable, dict):
         dict.__delitem__(self, key)
         self.changed()
 
+    def clear(self):
+        dict.clear(self)
+        self.changed()
+
     @classmethod
     def coerce(cls, key, value):
         """Convert plain dictionary to MutableDict."""
index 4516e3ac2f5e26c0f84a0c4614cc59d76eca379a..bda9e5382e7ffa77ba57c236a34dc6ab56665959 100644 (file)
@@ -74,6 +74,18 @@ class _MutableDictTestBase(object):
 
         eq_(f1.data, {'a': 'c'})
 
+    def test_clear(self):
+        sess = Session()
+
+        f1 = Foo(data={'a': 'b'})
+        sess.add(f1)
+        sess.commit()
+
+        f1.data.clear()
+        sess.commit()
+
+        eq_(f1.data, {})
+
     def test_replace(self):
         sess = Session()
         f1 = Foo(data={'a': 'b'})