diff options
author | Patrick Totzke <patricktotzke@gmail.com> | 2012-01-08 19:14:52 +0000 |
---|---|---|
committer | Patrick Totzke <patricktotzke@gmail.com> | 2012-01-08 19:14:52 +0000 |
commit | 736c43cc4a651006ec921c6bac6301a337d88364 (patch) | |
tree | 279d51481f556e0239fcacae94d2dd86a3dee220 | |
parent | 3137d5eb89294db4f3ba2fba7c8bd2f4ac53003a (diff) |
remove set_tags for remove_rest parm to add_tags
Thread.add_tags now receives a 'remove_rest' parameter
just like the analogous Message.add_tags.
This makes Thread.set_tags obsolete
-rw-r--r-- | alot/db.py | 50 |
1 files changed, 14 insertions, 36 deletions
@@ -386,7 +386,7 @@ class Thread(object): tags = tags.intersection(set(m.get_tags())) return tags - def add_tags(self, tags, afterwards=None): + def add_tags(self, tags, afterwards=None, remove_rest=False): """ add `tags` to all messages in this thread @@ -401,16 +401,21 @@ class Thread(object): :param afterwards: callback that gets called after successful application of this tagging operation :type afterwards: callable + :param remove_rest: remove all other tags + :type remove_rest: bool """ - newtags = set(tags).difference(self._tags) - if newtags: - def myafterwards(): - self._tags = self._tags.union(tags) - if callable(afterwards): - afterwards() + if remove_rest: + newtags = tags + else: + newtags = set(tags).difference(self._tags) + + 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) + self._dbman.tag('thread:' + self._id, newtags, afterwards=myafterwards, + remove_rest=remove_rest) def remove_tags(self, tags, afterwards=None): """ @@ -437,33 +442,6 @@ class Thread(object): self._dbman.untag('thread:' + self._id, tags, myafterwards) self._tags = self._tags.difference(rmtags) - def set_tags(self, tags, afterwards=None): - """ - set tags (list of str) of all messages in this thread. This removes all - tags and attaches the given ones in one step. - - .. note:: - - This only adds the requested operation to this objects - :class:`DBManager's <DBManager>` write queue. - You need to call :meth:`DBManager.flush` to actually write out. - - :param tags: a list of tags to be added - :type tags: list of str - :param afterwards: callback that gets called after successful - application of this tagging operation - :type afterwards: callable - """ - if tags != self._tags: - 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) - def get_authors(self): # TODO: make this return a list of strings """returns authors string""" return self._authors |