summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-06-03 18:23:23 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2013-06-03 18:23:23 -0400
commit3a13047fb06d698e0440895281c484199e0a95a5 (patch)
treef3027214ea733fb5f34591577c98861d5973be71
parentf1bdc3e999b4ad76515a6452099e3c26d7b4228b (diff)
downloadsqlalchemy-3a13047fb06d698e0440895281c484199e0a95a5.tar.gz
Fixed bug where :class:`.MutableDict` didn't report a change event
when ``clear()`` was called. [ticket:2730]
-rw-r--r--doc/build/changelog/changelog_08.rst7
-rw-r--r--doc/build/changelog/changelog_09.rst7
-rw-r--r--lib/sqlalchemy/ext/mutable.py4
-rw-r--r--test/ext/test_mutable.py12
4 files changed, 30 insertions, 0 deletions
diff --git a/doc/build/changelog/changelog_08.rst b/doc/build/changelog/changelog_08.rst
index ec0027e73..94ada9ac5 100644
--- a/doc/build/changelog/changelog_08.rst
+++ b/doc/build/changelog/changelog_08.rst
@@ -7,6 +7,13 @@
: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
diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst
index d3fd58131..673a50a9a 100644
--- a/doc/build/changelog/changelog_09.rst
+++ b/doc/build/changelog/changelog_09.rst
@@ -7,6 +7,13 @@
:version: 0.9.0
.. change::
+ :tags: bug, ext, orm
+ :tickets: 2730
+
+ Fixed bug where :class:`.MutableDict` didn't report a change event
+ when ``clear()`` was called. Also in 0.8.2
+
+ .. change::
:tags: bug, sql
:tickets: 2738
diff --git a/lib/sqlalchemy/ext/mutable.py b/lib/sqlalchemy/ext/mutable.py
index b1b851f72..ca27f172f 100644
--- a/lib/sqlalchemy/ext/mutable.py
+++ b/lib/sqlalchemy/ext/mutable.py
@@ -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."""
diff --git a/test/ext/test_mutable.py b/test/ext/test_mutable.py
index 4516e3ac2..bda9e5382 100644
--- a/test/ext/test_mutable.py
+++ b/test/ext/test_mutable.py
@@ -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'})