diff options
Diffstat (limited to 'py-fake-service/app/adapter')
-rw-r--r-- | py-fake-service/app/adapter/mail_service.py | 22 | ||||
-rw-r--r-- | py-fake-service/app/adapter/mailset.py | 16 | ||||
-rw-r--r-- | py-fake-service/app/adapter/tag.py | 3 | ||||
-rw-r--r-- | py-fake-service/app/adapter/tagsset.py | 7 |
4 files changed, 46 insertions, 2 deletions
diff --git a/py-fake-service/app/adapter/mail_service.py b/py-fake-service/app/adapter/mail_service.py index 7073e549..c6bd3ab4 100644 --- a/py-fake-service/app/adapter/mail_service.py +++ b/py-fake-service/app/adapter/mail_service.py @@ -40,5 +40,27 @@ class MailService: self.mailset.mark_as_read(mail_id) self.tagsset.mark_as_read(self.mail(mail_id).tags) + def delete_mail(self, mail_id): + purged = self.mailset.delete(mail_id) + if not purged: + self.tagsset.increment_tag_total_count('trash') + + + def update_tags_for(self, mail_id, new_tags): + mail = self.mail(mail_id) + + new_tags_set = set(new_tags) + old_tags_set = set(mail.tags) + + increment_set = new_tags_set - old_tags_set + decrement_set = old_tags_set - new_tags_set + + map(lambda x : self.tagsset.increment_tag_total_count(x), increment_set) + map(lambda x : self.tagsset.decrement_tag_total_count(x), decrement_set) + + mail.tags = new_tags + + + diff --git a/py-fake-service/app/adapter/mailset.py b/py-fake-service/app/adapter/mailset.py index 2568e33b..5a6f27a4 100644 --- a/py-fake-service/app/adapter/mailset.py +++ b/py-fake-service/app/adapter/mailset.py @@ -15,8 +15,20 @@ class MailSet: return self.mails.values() def get(self, mail_id): - return self.mails.get(int(mail_id)) + return self.mails.get(mail_id) def mark_as_read(self, mail_id): - mail = self.mails.get(int(mail_id)) + mail = self.get(mail_id) mail.status.append('read') + + def delete(self, mail_id): + """ Returns True if the email got purged, else returns False meaning the email got moved to trash """ + + mail = self.get(mail_id) + if 'trash' in mail.tags: + del self.mails[mail_id] + return True + mail.tags.append('trash') + return False + + diff --git a/py-fake-service/app/adapter/tag.py b/py-fake-service/app/adapter/tag.py index 73103490..a0f3ec1b 100644 --- a/py-fake-service/app/adapter/tag.py +++ b/py-fake-service/app/adapter/tag.py @@ -18,3 +18,6 @@ class Tag: def increment_read(self): self.counts['read'] += 1 + + def decrement_count(self): + self.counts['total'] -= 1 diff --git a/py-fake-service/app/adapter/tagsset.py b/py-fake-service/app/adapter/tagsset.py index 04c712d4..abe7ef7e 100644 --- a/py-fake-service/app/adapter/tagsset.py +++ b/py-fake-service/app/adapter/tagsset.py @@ -19,3 +19,10 @@ class TagsSet: for tag in tags: tag = self.tags.get(tag) tag.increment_read() + + def increment_tag_total_count(self, tag): + self.tags.get(tag).increment_count() + + def decrement_tag_total_count(self, tag): + self.tags.get(tag).decrement_count() + |