diff options
author | Bruno Wagner <bwagner@thoughtworks.com> | 2014-09-15 16:28:31 -0300 |
---|---|---|
committer | Bruno Wagner <bwagner@thoughtworks.com> | 2014-09-15 16:28:31 -0300 |
commit | 5dc16a1e654e78d9b600578a0e2276cba8d94158 (patch) | |
tree | 0b12d78f54a53112e110ecf0e1bcce197f13e3ca /fake-service/app/adapter/tagsset.py | |
parent | f2bb13595d67775e8ea89ea595cdbe8b7db96dd8 (diff) |
Moved py-fake-service to fake-service, because we only have one now
Diffstat (limited to 'fake-service/app/adapter/tagsset.py')
-rw-r--r-- | fake-service/app/adapter/tagsset.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/fake-service/app/adapter/tagsset.py b/fake-service/app/adapter/tagsset.py new file mode 100644 index 00000000..8e0d7ca3 --- /dev/null +++ b/fake-service/app/adapter/tagsset.py @@ -0,0 +1,57 @@ +# +# Copyright (c) 2014 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see <http://www.gnu.org/licenses/>. +from tag import Tag + + +class TagsSet: + + DEFAULT_TAGS = ["inbox", "sent", "trash", "drafts"] + + def __init__(self): + self.ident = 0 + self.tags = {} + self.tags = {tag: self._create_new_tag(tag) for tag in self.DEFAULT_TAGS} + + def add(self, mbox_mail): + tags = filter(len, mbox_mail.get('X-TW-Pixelated-Tags').split(', ')) + for tag in tags: + tag = self._create_new_tag(tag) + tag.increment_count() + + def all_tags(self): + return self.tags.values() + + def mark_as_read(self, tags): + for tag in tags: + tag = tag.lower() + tag = self.tags.get(tag) + tag.increment_read() + + def increment_tag_total_count(self, tagname): + tag = self.tags.get(tagname) + if tag: + tag.increment_count() + else: + self._create_new_tag(tagname) + + def decrement_tag_total_count(self, tag): + self.tags.get(tag).decrement_count() + + def _create_new_tag(self, tag): + tag = Tag(tag, self.ident) + tag = self.tags.setdefault(tag.name, tag) + self.ident += 1 + return tag |