1
0
Fork 1
mirror of https://github.com/coddingtonbear/django-mailbox.git synced 2026-07-09 22:38:19 +02:00

Cache email object in Message

This commit is contained in:
Adam Dobrawy 2017-07-15 19:41:55 +02:00
parent 9f8d653ada
commit 67900104a2

View file

@ -345,6 +345,7 @@ class Mailbox(models.Model):
def _process_message(self, message): def _process_message(self, message):
msg = Message() msg = Message()
msg._email_object = message
settings = utils.get_settings() settings = utils.get_settings()
if settings['store_original_message']: if settings['store_original_message']:
@ -710,6 +711,7 @@ class Message(models.Model):
(https://docs.python.org/2/library/email.message.html) (https://docs.python.org/2/library/email.message.html)
""" """
if not hasattr(self, '_email_object'): # Cache fill
if self.eml: if self.eml:
if self.eml.name.endswith('.gz'): if self.eml.name.endswith('.gz'):
body = gzip.GzipFile(fileobj=self.eml).read() body = gzip.GzipFile(fileobj=self.eml).read()
@ -723,7 +725,8 @@ class Message(models.Model):
flat = email.message_from_bytes(body) flat = email.message_from_bytes(body)
else: else:
flat = email.message_from_string(body) flat = email.message_from_string(body)
return self._rehydrate(flat) self._email_object = self._rehydrate(flat)
return self._email_object
def delete(self, *args, **kwargs): def delete(self, *args, **kwargs):
"""Delete this message and all stored attachments.""" """Delete this message and all stored attachments."""