summaryrefslogtreecommitdiff
path: root/service/app/adapter/pixelated_mail.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/app/adapter/pixelated_mail.py')
-rw-r--r--service/app/adapter/pixelated_mail.py38
1 files changed, 27 insertions, 11 deletions
diff --git a/service/app/adapter/pixelated_mail.py b/service/app/adapter/pixelated_mail.py
index 412414ed..cdfd9a29 100644
--- a/service/app/adapter/pixelated_mail.py
+++ b/service/app/adapter/pixelated_mail.py
@@ -1,4 +1,5 @@
from app.tags import Tag
+from app.tags import Tags
class PixelatedMail:
@@ -25,28 +26,43 @@ class PixelatedMail:
def __init__(self, leap_mail):
self.leap_mail = leap_mail
self.body = leap_mail.bdoc.content['raw']
- self.headers = self.extract_headers(leap_mail)
+ self.headers = self.extract_headers()
self.ident = leap_mail.getUID()
- self.status = self.extract_status(leap_mail)
+ self.status = self.extract_status()
self.security_casing = {}
- self.tags = self.extract_tags(leap_mail)
+ self.tags = self.extract_tags()
- def extract_status(self, leap_mail):
- flags = leap_mail.getFlags()
+ def extract_status(self):
+ flags = self.leap_mail.getFlags()
return [converted for flag, converted in self.LEAP_FLAGS_STATUSES.items() if flag in flags]
- def extract_headers(self, leap_mail):
+ def extract_headers(self):
temporary_headers = {}
- for header, value in leap_mail.hdoc.content['headers'].items():
+ for header, value in self.leap_mail.hdoc.content['headers'].items():
temporary_headers[header.lower()] = value
return temporary_headers
- def extract_tags(self, leap_mail):
- flags = leap_mail.getFlags()
- converted_tags = [Tag(converted) for flag, converted in self.LEAP_FLAGS_TAGS.items() if flag in flags]
- tags = converted_tags + [Tag(flag) for flag in leap_mail.getFlags() if flag not in self.LEAP_FLAGS]
+ def extract_tags(self):
+ flags = self.leap_mail.getFlags()
+ tag_names = self._converted_tags(flags) + self._custom_tags(flags)
+ tags = []
+ for tag in tag_names:
+ tags.append(Tag(tag))
return tags
+ def _converted_tags(self, flags):
+ return [converted for flag, converted in self.LEAP_FLAGS_TAGS.items() if flag in flags]
+
+ def _custom_tags(self, flags):
+ return [self._remove_prefix(flag) for flag in self.leap_mail.getFlags() if flag.startswith('tag_')]
+
+ def _remove_prefix(self, flag_name):
+ return flag_name.replace('tag_', '', 1)
+
+ def update_tags(self, tags):
+ self.tags = [Tag(tag) for tag in tags]
+ return self.tags
+
def has_tag(self, tag):
return Tag(tag) in self.tags