diff options
author | Patrick Maia <patrickjourdanmaia@gmail.com> | 2014-10-01 11:59:29 -0300 |
---|---|---|
committer | Patrick Maia <patrickjourdanmaia@gmail.com> | 2014-10-01 16:43:43 -0300 |
commit | 6244ef377aace0659c088f6c95878ec8aeb0cd02 (patch) | |
tree | 5546d537341322bbdeea3809f5aebf2513b0600b /service/pixelated/adapter | |
parent | d58d64c764a1a83411cff6a28a150cc8138a0228 (diff) |
#53 - does not allow reserved names in tags
Diffstat (limited to 'service/pixelated/adapter')
-rw-r--r-- | service/pixelated/adapter/mail_service.py | 3 | ||||
-rw-r--r-- | service/pixelated/adapter/pixelated_mail.py | 6 | ||||
-rw-r--r-- | service/pixelated/adapter/tag_service.py | 6 |
3 files changed, 11 insertions, 4 deletions
diff --git a/service/pixelated/adapter/mail_service.py b/service/pixelated/adapter/mail_service.py index c216e7ae..8be04984 100644 --- a/service/pixelated/adapter/mail_service.py +++ b/service/pixelated/adapter/mail_service.py @@ -35,6 +35,9 @@ class MailService: return sorted(_mails or [], key=lambda mail: mail.headers['Date'], reverse=True) def update_tags(self, mail_id, new_tags): + reserved_words = self.tag_service.extract_reserved(new_tags) + if len(reserved_words): + raise ValueError('None of the following words can be used as tags: %s' % list(reserved_words)) mail = self.mail(mail_id) return mail.update_tags(set(new_tags)) diff --git a/service/pixelated/adapter/pixelated_mail.py b/service/pixelated/adapter/pixelated_mail.py index 3e0f1ee0..2f13cb01 100644 --- a/service/pixelated/adapter/pixelated_mail.py +++ b/service/pixelated/adapter/pixelated_mail.py @@ -24,7 +24,6 @@ import pixelated.support.date from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText from pycryptopp.hash import sha256 -from pixelated.support.functional import flatten class InputMail: @@ -250,8 +249,9 @@ class PixelatedMail: return self def mark_as_not_recent(self): - self.fdoc.content['flags'].remove(Status.PixelatedStatus.RECENT) - self.save() + if Status.PixelatedStatus.RECENT in self.fdoc.content['flags']: + self.fdoc.content['flags'].remove(Status.PixelatedStatus.RECENT) + self.save() return self def _persist_mail_tags(self, current_tags): diff --git a/service/pixelated/adapter/tag_service.py b/service/pixelated/adapter/tag_service.py index 00f28b40..ecc64fad 100644 --- a/service/pixelated/adapter/tag_service.py +++ b/service/pixelated/adapter/tag_service.py @@ -20,7 +20,11 @@ from pixelated.adapter.tag_index import TagIndex class TagService: instance = None - SPECIAL_TAGS = {Tag('inbox', True), Tag('sent', True), Tag('drafts', True), Tag('trash', True)} + SPECIAL_TAGS = [Tag('inbox', True), Tag('sent', True), Tag('drafts', True), Tag('trash', True)] + + @classmethod + def extract_reserved(cls, tags): + return set(tag.name for tag in cls.SPECIAL_TAGS if tag.name in tags) @classmethod def get_instance(cls): |