mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-17 18:09:25 +02:00
Biz logic
This commit is contained in:
parent
010853a5f0
commit
fdb7fb6594
2 changed files with 78 additions and 4 deletions
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import pyzipper
|
||||||
|
|
||||||
from django.core.management import BaseCommand
|
from django.core.management import BaseCommand
|
||||||
from registrar.utility import csv_export
|
from registrar.utility import csv_export
|
||||||
from registrar.utility.s3_bucket import S3ClientHelper
|
from registrar.utility.s3_bucket import S3ClientHelper
|
||||||
|
from ...utility.email import send_templated_email, EmailSendingError
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -59,9 +61,27 @@ class Command(BaseCommand):
|
||||||
We want to make sure to upload to s3 for back up
|
We want to make sure to upload to s3 for back up
|
||||||
And now we also want to get the file and encrypt it so we can send it in an email
|
And now we also want to get the file and encrypt it so we can send it in an email
|
||||||
"""
|
"""
|
||||||
# metadata_file = s3_client.get_file(file_name)
|
unencrypted_metadata_input = s3_client.get_file(file_name)
|
||||||
# metadata_file.encryptthisthingherewithpyzipper
|
|
||||||
# email.blasend_email(metadata_file)
|
|
||||||
|
|
||||||
|
|
||||||
|
# Encrypt metadata into a zip file
|
||||||
|
|
||||||
|
# pre-setting zip file name
|
||||||
|
encrypted_metadata_output = 'encrypted_metadata.zip'
|
||||||
|
# set this to be an env var somewhere
|
||||||
|
password = b'somepasswordhere'
|
||||||
|
# encrypted_metadata is the encrypted output
|
||||||
|
encrypted_metadata = _encrypt_metadata(unencrypted_metadata_input, encrypted_metadata_output, password)
|
||||||
|
print("encrypted_metadata is:", encrypted_metadata)
|
||||||
|
|
||||||
|
# Send the metadata file that is zipped
|
||||||
|
# Q: Would we set the vars I set in email.py here to pass in to the helper function or best way to invoke
|
||||||
|
# send_templated_email(encrypted_metadata, attachment=True)
|
||||||
|
|
||||||
|
def _encrypt_metadata(input_file, output_file, password):
|
||||||
|
with open(input_file, 'rb') as f_in:
|
||||||
|
with pyzipper.AESZipFile(output_file, 'w', compression=pyzipper.ZIP_LZMA, encryption=pyzipper.WZ_AES) as f_out:
|
||||||
|
f_out.setpassword(password)
|
||||||
|
f_out.writestr(input_file, f_in.read())
|
||||||
|
return output_file
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,8 @@ def send_templated_email(template_name: str, subject_template_name: str, to_addr
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
raise EmailSendingError("Could not access the SES client.") from exc
|
raise EmailSendingError("Could not access the SES client.") from exc
|
||||||
|
|
||||||
|
# Are we okay with passing in "attachment" var in as boolean parameter
|
||||||
|
# If so, TODO: add attachment boolean to other functions
|
||||||
try:
|
try:
|
||||||
#if not attachment:
|
#if not attachment:
|
||||||
ses_client.send_email(
|
ses_client.send_email(
|
||||||
|
@ -55,5 +57,57 @@ def send_templated_email(template_name: str, subject_template_name: str, to_addr
|
||||||
# else: # has attachment
|
# else: # has attachment
|
||||||
# same as above but figure out how to attach a file
|
# same as above but figure out how to attach a file
|
||||||
# via boto3 "boto3 SES file attachment"
|
# via boto3 "boto3 SES file attachment"
|
||||||
|
# we also want this to only send to the help email
|
||||||
|
|
||||||
|
# from email.mime.multipart import MIMEMultipart
|
||||||
|
# from email.mime.text import MIMEText
|
||||||
|
# from email.mime.application import MIMEApplication
|
||||||
|
|
||||||
|
# sender_email = 'sender@example.com'
|
||||||
|
# recipient_email = 'help@get.gov'
|
||||||
|
# subject = 'DOTGOV-Full Domain Metadata'
|
||||||
|
# body = 'Domain metadata email, should have an attachment included change here later.'
|
||||||
|
# attachment_path = 'path/to/attachment/file.pdf'
|
||||||
|
# aws_region = 'sesv2'
|
||||||
|
|
||||||
|
# response = send_email_with_attachment(sender_email, recipient_email, subject, body, attachment_path, aws_region)
|
||||||
|
# print(response)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
raise EmailSendingError("Could not send SES email.") from exc
|
raise EmailSendingError("Could not send SES email.") from exc
|
||||||
|
|
||||||
|
|
||||||
|
# def send_email_with_attachment(sender, recipient, subject, body, attachment_path, aws_region):
|
||||||
|
# # Create a multipart/mixed parent container
|
||||||
|
# msg = MIMEMultipart('mixed')
|
||||||
|
# msg['Subject'] = subject
|
||||||
|
# msg['From'] = sender_email
|
||||||
|
# msg['To'] = recipient_email
|
||||||
|
|
||||||
|
# # Add the text part
|
||||||
|
# text_part = MIMEText(body, 'plain')
|
||||||
|
# msg.attach(text_part)
|
||||||
|
|
||||||
|
# # Add the attachment part
|
||||||
|
# with open(attachment_path, 'rb') as attachment_file:
|
||||||
|
# attachment_data = attachment_file.read()
|
||||||
|
# attachment_part = MIMEApplication(attachment_data)
|
||||||
|
# attachment_part.add_header('Content-Disposition', f'attachment; filename="{attachment_path}"')
|
||||||
|
# msg.attach(attachment_part)
|
||||||
|
|
||||||
|
# # Send the email
|
||||||
|
# response = ses_client.send_raw_email(
|
||||||
|
# Source=sender,
|
||||||
|
# Destinations=[recipient],
|
||||||
|
# RawMessage={'Data': msg.as_string()}
|
||||||
|
# )
|
||||||
|
|
||||||
|
# ses_client.send_email(
|
||||||
|
# FromEmailAddress=settings.DEFAULT_FROM_EMAIL,
|
||||||
|
# Destination={"ToAddresses": [to_address]},
|
||||||
|
# Content={
|
||||||
|
# "Simple": {
|
||||||
|
# "Subject": {"Data": subject},
|
||||||
|
# "Body": {"Text": {"Data": email_body}},
|
||||||
|
# },
|
||||||
|
# },
|
||||||
|
# )
|
Loading…
Add table
Add a link
Reference in a new issue