summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Totzke <patricktotzke@gmail.com>2012-01-08 19:14:52 +0000
committerPatrick Totzke <patricktotzke@gmail.com>2012-01-08 19:14:52 +0000
commit736c43cc4a651006ec921c6bac6301a337d88364 (patch)
tree279d51481f556e0239fcacae94d2dd86a3dee220
parent3137d5eb89294db4f3ba2fba7c8bd2f4ac53003a (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.py50
1 files changed, 14 insertions, 36 deletions
diff --git a/alot/db.py b/alot/db.py
index 1ee8f329..dd639ed2 100644
--- a/alot/db.py
+++ b/alot/db.py
@@ -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