From 86ef7f54d9d21f6155a5b0f5153a280817341579 Mon Sep 17 00:00:00 2001 From: Son NK Date: Sun, 22 Mar 2020 16:51:21 +0100 Subject: [PATCH] RefusedEmail.path can be null --- app/models.py | 7 ++-- email_handler.py | 6 ++-- .../versions/2020_032216_541ce53ab6e9_.py | 33 +++++++++++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 migrations/versions/2020_032216_541ce53ab6e9_.py diff --git a/app/models.py b/app/models.py index c52e953e..baa5333c 100644 --- a/app/models.py +++ b/app/models.py @@ -982,7 +982,7 @@ class RefusedEmail(db.Model, ModelMixin): full_report_path = db.Column(db.String(128), unique=True, nullable=False) # The original email, to display to user - path = db.Column(db.String(128), unique=True, nullable=False) + path = db.Column(db.String(128), unique=True, nullable=True) user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False) @@ -993,7 +993,10 @@ class RefusedEmail(db.Model, ModelMixin): deleted = db.Column(db.Boolean, nullable=False, default=False, server_default="0") def get_url(self, expires_in=3600): - return s3.get_url(self.path, expires_in) + if self.path: + return s3.get_url(self.path, expires_in) + else: + return s3.get_url(self.full_report_path, expires_in) def __repr__(self): return f"" diff --git a/email_handler.py b/email_handler.py index 88a18e26..45db4099 100644 --- a/email_handler.py +++ b/email_handler.py @@ -548,8 +548,10 @@ def handle_bounce( full_report_path = f"refused-emails/full-{random_name}.eml" s3.upload_email_from_bytesio(full_report_path, BytesIO(msg.as_bytes()), random_name) - file_path = f"refused-emails/{random_name}.eml" - s3.upload_email_from_bytesio(file_path, BytesIO(orig_msg.as_bytes()), random_name) + file_path = None + if orig_msg: + file_path = f"refused-emails/{random_name}.eml" + s3.upload_email_from_bytesio(file_path, BytesIO(orig_msg.as_bytes()), random_name) refused_email = RefusedEmail.create( path=file_path, full_report_path=full_report_path, user_id=user.id diff --git a/migrations/versions/2020_032216_541ce53ab6e9_.py b/migrations/versions/2020_032216_541ce53ab6e9_.py new file mode 100644 index 00000000..ae8f70e5 --- /dev/null +++ b/migrations/versions/2020_032216_541ce53ab6e9_.py @@ -0,0 +1,33 @@ +"""empty message + +Revision ID: 541ce53ab6e9 +Revises: 30c13ca016e4 +Create Date: 2020-03-22 16:51:01.141010 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '541ce53ab6e9' +down_revision = '30c13ca016e4' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('refused_email', 'path', + existing_type=sa.VARCHAR(length=128), + nullable=True) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('refused_email', 'path', + existing_type=sa.VARCHAR(length=128), + nullable=False) + # ### end Alembic commands ###