diff --git a/CHANGELOG.md b/CHANGELOG.md index 305c818..d43522a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), [Also based on](https://github.com/conventional-changelog/standard-version/blob/master/CHANGELOG.md) so decending. -## [0.1.2] - 2021-02-06 +## [0.1.2] - 2021-02-07 ### Added - adds unique constrain to the message id and a bit of a change on how to create a message +- adds formatting updates and testing updates ## [0.1.1] - 2021-02-03 ### Added diff --git a/django_mailbox/migrations/0009_auto_20210207_0221.py b/django_mailbox/migrations/0009_auto_20210207_0221.py index 5464578..88f958a 100644 --- a/django_mailbox/migrations/0009_auto_20210207_0221.py +++ b/django_mailbox/migrations/0009_auto_20210207_0221.py @@ -6,13 +6,19 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('django_mailbox', '0008_auto_20190219_1553'), + ("django_mailbox", "0008_auto_20190219_1553"), ] operations = [ migrations.AlterField( - model_name='message', - name='message_id', - field=models.CharField(blank=None, max_length=255, null=None, unique=True, verbose_name='Message ID'), + model_name="message", + name="message_id", + field=models.CharField( + blank=None, + max_length=255, + null=None, + unique=True, + verbose_name="Message ID", + ), ), ] diff --git a/django_mailbox/models.py b/django_mailbox/models.py index be42372..d6166fd 100644 --- a/django_mailbox/models.py +++ b/django_mailbox/models.py @@ -352,7 +352,10 @@ class Mailbox(models.Model): return new def _process_message(self, message): - msg = Message(message_id=message["message-id"][0:255].strip()) + try: + msg = Message(message_id=message["message-id"][0:255].strip()) + except Exception: + msg = Message() msg._email_object = message settings = utils.get_settings() @@ -361,8 +364,8 @@ class Mailbox(models.Model): msg.mailbox = self if "subject" in message: msg.subject = utils.convert_header_to_unicode(message["subject"])[0:255] - # ~ if "message-id" in message: - # ~ msg.message_id = message["message-id"][0:255].strip() + if "message-id" in message: + msg.message_id = message["message-id"][0:255].strip() if "from" in message: msg.from_header = utils.convert_header_to_unicode(message["from"]) if "to" in message: @@ -472,7 +475,9 @@ class Message(models.Model): subject = models.CharField(_("Subject"), max_length=255) - message_id = models.CharField(_("Message ID"), max_length=255,blank=None,null=None,unique=True) + message_id = models.CharField( + _("Message ID"), max_length=255, blank=None, null=None, unique=True + ) in_reply_to = models.ForeignKey( "django_mailbox.Message", diff --git a/django_mailbox/signals.py b/django_mailbox/signals.py index 9de31ae..9af4af7 100644 --- a/django_mailbox/signals.py +++ b/django_mailbox/signals.py @@ -1,3 +1,3 @@ from django.dispatch.dispatcher import Signal -message_received = Signal(providing_args=["message"]) +message_received = Signal() diff --git a/django_mailbox/tests/test_process_email.py b/django_mailbox/tests/test_process_email.py index 2403a2d..c0d4c68 100644 --- a/django_mailbox/tests/test_process_email.py +++ b/django_mailbox/tests/test_process_email.py @@ -10,7 +10,7 @@ from django_mailbox.models import Mailbox, Message from django_mailbox.utils import convert_header_to_unicode from django_mailbox import utils from django_mailbox.tests.base import EmailMessageTestCase -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.core.mail import EmailMessage __all__ = ["TestProcessEmail"] @@ -347,11 +347,11 @@ class TestProcessEmail(EmailMessageTestCase): email_object = self._get_email_object( "message_with_long_content.eml", ) - size = len(force_text(email_object.as_string())) + size = len(force_str(email_object.as_string())) msg = self.mailbox.process_incoming_message(email_object) - self.assertEqual(size, len(force_text(msg.get_email_object().as_string()))) + self.assertEqual(size, len(force_str(msg.get_email_object().as_string()))) def test_message_saved(self): message = self._get_email_object("generic_message.eml") @@ -365,7 +365,7 @@ class TestProcessEmail(EmailMessageTestCase): msg = self.mailbox.process_incoming_message(message) - self.assertNotEquals(msg.eml, None) + self.assertNotEqual(msg.eml, None) self.assertTrue(msg.eml.name.endswith(".eml")) @@ -384,7 +384,7 @@ class TestProcessEmail(EmailMessageTestCase): msg = self.mailbox.process_incoming_message(message) - self.assertEquals(msg.eml, None) + self.assertEqual(msg.eml, None) def test_message_compressed(self): message = self._get_email_object("generic_message.eml") diff --git a/django_mailbox/transports/imap.py b/django_mailbox/transports/imap.py index 730e55e..8808c67 100644 --- a/django_mailbox/transports/imap.py +++ b/django_mailbox/transports/imap.py @@ -1,7 +1,5 @@ import imaplib import logging -from os.path import exists -import json from django.conf import settings from .base import EmailTransport, MessageParseError @@ -108,7 +106,6 @@ class ImapTransport(EmailTransport): # If the archive folder does not exist, create it self.server.create(self.archive) - for uid in message_ids: try: typ, msg_contents = self.server.uid("fetch", uid, "(RFC822)") diff --git a/readme.rst b/readme.rst index 8966d95..a787ce4 100644 --- a/readme.rst +++ b/readme.rst @@ -14,7 +14,8 @@ These ingested messages will be stored in the database in Django models and you or -- if you're in a hurry -- by using a signal receiver. -### Usage +Usage +----- 1. poetry add django-mailbox @@ -36,3 +37,9 @@ or -- if you're in a hurry -- by using a signal receiver. `Github `_. - Test status available on `Travis-CI `_. + +Development +----------- + +export DJANGO_SETTINGS_MODULE=websrv.settings +