diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-06-03 18:23:23 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-06-03 18:23:23 -0400 |
| commit | 3a13047fb06d698e0440895281c484199e0a95a5 (patch) | |
| tree | f3027214ea733fb5f34591577c98861d5973be71 | |
| parent | f1bdc3e999b4ad76515a6452099e3c26d7b4228b (diff) | |
| download | sqlalchemy-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.rst | 7 | ||||
| -rw-r--r-- | doc/build/changelog/changelog_09.rst | 7 | ||||
| -rw-r--r-- | lib/sqlalchemy/ext/mutable.py | 4 | ||||
| -rw-r--r-- | test/ext/test_mutable.py | 12 |
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'}) |
