mirror of
https://github.com/coddingtonbear/django-mailbox.git
synced 2026-07-09 22:38:19 +02:00
Cache email object in Message (#148)
* Cache email object in Message * Email object cache flush in some tests
This commit is contained in:
parent
2b2bdb9825
commit
e0687380a1
2 changed files with 18 additions and 13 deletions
|
|
@ -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']:
|
||||||
|
|
@ -711,20 +712,22 @@ class Message(models.Model):
|
||||||
(https://docs.python.org/2/library/email.message.html)
|
(https://docs.python.org/2/library/email.message.html)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if self.eml:
|
if not hasattr(self, '_email_object'): # Cache fill
|
||||||
if self.eml.name.endswith('.gz'):
|
if self.eml:
|
||||||
body = gzip.GzipFile(fileobj=self.eml).read()
|
if self.eml.name.endswith('.gz'):
|
||||||
|
body = gzip.GzipFile(fileobj=self.eml).read()
|
||||||
|
else:
|
||||||
|
self.eml.open()
|
||||||
|
body = self.eml.file.read()
|
||||||
|
self.eml.close()
|
||||||
else:
|
else:
|
||||||
self.eml.open()
|
body = self.get_body()
|
||||||
body = self.eml.file.read()
|
if six.PY3:
|
||||||
self.eml.close()
|
flat = email.message_from_bytes(body)
|
||||||
else:
|
else:
|
||||||
body = self.get_body()
|
flat = email.message_from_string(body)
|
||||||
if six.PY3:
|
self._email_object = self._rehydrate(flat)
|
||||||
flat = email.message_from_bytes(body)
|
return self._email_object
|
||||||
else:
|
|
||||||
flat = email.message_from_string(body)
|
|
||||||
return self._rehydrate(flat)
|
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
def delete(self, *args, **kwargs):
|
||||||
"""Delete this message and all stored attachments."""
|
"""Delete this message and all stored attachments."""
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ class TestMessageFlattening(EmailMessageTestCase):
|
||||||
|
|
||||||
msg = self.mailbox.process_incoming_message(incoming_email_object)
|
msg = self.mailbox.process_incoming_message(incoming_email_object)
|
||||||
|
|
||||||
|
del msg._email_object # Cache flush
|
||||||
actual_email_object = msg.get_email_object()
|
actual_email_object = msg.get_email_object()
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|
@ -89,6 +90,7 @@ class TestMessageFlattening(EmailMessageTestCase):
|
||||||
|
|
||||||
msg = self.mailbox.process_incoming_message(incoming_email_object)
|
msg = self.mailbox.process_incoming_message(incoming_email_object)
|
||||||
|
|
||||||
|
del msg._email_object # Cache flush
|
||||||
actual_email_object = msg.get_email_object()
|
actual_email_object = msg.get_email_object()
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue