From 456019b85f9efbc50ccf932e8081641facaf8fae Mon Sep 17 00:00:00 2001 From: Lisa Junger Date: Fri, 10 Oct 2014 18:16:34 +0200 Subject: #104 Implemented mark single mail as unread --- service/pixelated/adapter/mail_service.py | 3 +++ service/pixelated/adapter/pixelated_mail.py | 7 ++++++- service/pixelated/adapter/status.py | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) (limited to 'service/pixelated/adapter') diff --git a/service/pixelated/adapter/mail_service.py b/service/pixelated/adapter/mail_service.py index ad494ac8..a6241821 100644 --- a/service/pixelated/adapter/mail_service.py +++ b/service/pixelated/adapter/mail_service.py @@ -54,6 +54,9 @@ class MailService: def mark_as_read(self, mail_id): return self.mail(mail_id).mark_as_read() + def mark_as_unread(self, mail_id): + return self.mail(mail_id).mark_as_unread() + def tags_for_thread(self, thread): raise NotImplementedError() diff --git a/service/pixelated/adapter/pixelated_mail.py b/service/pixelated/adapter/pixelated_mail.py index 4b207059..fabb1ab4 100644 --- a/service/pixelated/adapter/pixelated_mail.py +++ b/service/pixelated/adapter/pixelated_mail.py @@ -93,7 +93,7 @@ class InputMail: fd[fields.MULTIPART_KEY] = True fd[fields.RECENT_KEY] = True fd[fields.TYPE_KEY] = fields.TYPE_FLAGS_VAL - fd[fields.FLAGS_KEY] = ["\\Recent"] + fd[fields.FLAGS_KEY] = Status.to_flags([status.name for status in self.status]) self._fd = fd return fd @@ -261,6 +261,11 @@ class PixelatedMail: self.save() return self + def mark_as_unread(self): + self.fdoc.content['flags'].remove(Status.PixelatedStatus.SEEN) + self.save() + return self + def mark_as_not_recent(self): if Status.PixelatedStatus.RECENT in self.fdoc.content['flags']: self.fdoc.content['flags'].remove(Status.PixelatedStatus.RECENT) diff --git a/service/pixelated/adapter/status.py b/service/pixelated/adapter/status.py index cd11a46f..3807359c 100644 --- a/service/pixelated/adapter/status.py +++ b/service/pixelated/adapter/status.py @@ -37,6 +37,11 @@ class Status: def from_flags(cls, flags): return set(cls.from_flag(flag) for flag in flags if flag in cls.LEAP_FLAGS_STATUSES.keys()) + @classmethod + def to_flags(cls, statuses): + statuses_to_flags = dict(zip(cls.LEAP_FLAGS_STATUSES.values(), cls.LEAP_FLAGS_STATUSES.keys())) + return [statuses_to_flags[status] for status in statuses] + def __init__(self, name): self.name = name self.ident = name.__hash__() -- cgit v1.2.3