diff options
author | Patrick Totzke <patricktotzke@gmail.com> | 2012-01-08 12:23:19 +0000 |
---|---|---|
committer | Patrick Totzke <patricktotzke@gmail.com> | 2012-01-08 12:23:19 +0000 |
commit | 55702c5ed955dc230f310d229fa0c2bcaee4e3ac (patch) | |
tree | 4b08bc5021030101937d39cb72ce3817ab0583df /alot | |
parent | abc41deef6db833d50709fb337be89f9d72f0ec8 (diff) |
update local tags in Message and Thread
by extending the afterwards callback
issue #242
Diffstat (limited to 'alot')
-rw-r--r-- | alot/db.py | 20 | ||||
-rw-r--r-- | alot/message.py | 14 |
2 files changed, 28 insertions, 6 deletions
@@ -404,7 +404,12 @@ class Thread(object): """ newtags = set(tags).difference(self._tags) if newtags: - self._dbman.tag('thread:' + self._id, newtags, afterwards) + def myafterwards(): + self._tags = self._tags.union(tags) + if callable(afterwards): + afterwards() + + self._dbman.tag('thread:' + self._id, newtags, myafterwards) self._tags = self._tags.union(newtags) def remove_tags(self, tags, afterwards=None): @@ -425,7 +430,11 @@ class Thread(object): """ rmtags = set(tags).intersection(self._tags) if rmtags: - self._dbman.untag('thread:' + self._id, tags, afterwards) + def myafterwards(): + self._tags = self._tags.difference(tags) + if callable(afterwards): + afterwards() + self._dbman.untag('thread:' + self._id, tags, myafterwards) self._tags = self._tags.difference(rmtags) def set_tags(self, tags, afterwards=None): @@ -446,7 +455,12 @@ class Thread(object): :type afterwards: callable """ if tags != self._tags: - self._dbman.tag('thread:' + self._id, tags, afterwards=afterwards, + def myafterwards(): + self._tags = set(tags) + if callable(afterwards): + afterwards() + self._dbman.tag('thread:' + self._id, tags, + afterwards=myafterwards, remove_rest=True) self._tags = set(tags) diff --git a/alot/message.py b/alot/message.py index 163dac05..db96803b 100644 --- a/alot/message.py +++ b/alot/message.py @@ -176,7 +176,12 @@ class Message(object): application of this tagging operation :type afterwards: callable """ - self._dbman.tag('id:' + self._id, tags, afterwards) + def myafterwards(): + self._tags = self._tags.union(tags) + if callable(afterwards): + afterwards() + + self._dbman.tag('id:' + self._id, tags, myafterwards) self._tags = self._tags.union(tags) def remove_tags(self, tags, afterwards=None): @@ -194,9 +199,12 @@ class Message(object): application of this tagging operation :type afterwards: callable """ + def myafterwards(): + self._tags = self._tags.difference(tags) + if callable(afterwards): + afterwards() - self._dbman.untag('id:' + self._id, tags, afterwards) - self._tags = self._tags.difference(tags) + self._dbman.untag('id:' + self._id, tags, myafterwards) def get_attachments(self): """ |