Merge branch 'master' into fix-delete-s3

This commit is contained in:
Rebecca Law
2018-08-13 11:44:44 +01:00
2 changed files with 25 additions and 14 deletions

View File

@@ -334,7 +334,7 @@ def delete_notifications_created_more_than_a_week_ago_by_type(notification_type)
services_with_data_retention)) services_with_data_retention))
if notification_type == LETTER_TYPE: if notification_type == LETTER_TYPE:
_delete_letters_from_s3(query=query) _delete_letters_from_s3(query=query)
deleted = query.delete(synchronize_session='fetch') deleted += query.delete(synchronize_session='fetch')
return deleted return deleted
@@ -342,19 +342,20 @@ def _delete_letters_from_s3(query):
letters_to_delete_from_s3 = query.all() letters_to_delete_from_s3 = query.all()
for letter in letters_to_delete_from_s3: for letter in letters_to_delete_from_s3:
bucket_name = current_app.config['LETTERS_PDF_BUCKET_NAME'] bucket_name = current_app.config['LETTERS_PDF_BUCKET_NAME']
sent_at = str(letter.sent_at.date()) if letter.sent_at:
prefix = LETTERS_PDF_FILE_LOCATION_STRUCTURE.format( sent_at = str(letter.sent_at.date())
folder=sent_at, prefix = LETTERS_PDF_FILE_LOCATION_STRUCTURE.format(
reference=letter.reference, folder=sent_at,
duplex="D", reference=letter.reference,
letter_class="2", duplex="D",
colour="C", letter_class="2",
crown="C" if letter.service.crown else "N", colour="C",
date='' crown="C" if letter.service.crown else "N",
).upper()[:-5] date=''
s3_objects = get_s3_bucket_objects(bucket_name=bucket_name, subfolder=prefix) ).upper()[:-5]
for s3_object in s3_objects: s3_objects = get_s3_bucket_objects(bucket_name=bucket_name, subfolder=prefix)
remove_s3_object(bucket_name, s3_object['Key']) for s3_object in s3_objects:
remove_s3_object(bucket_name, s3_object['Key'])
@statsd(namespace="dao") @statsd(namespace="dao")

View File

@@ -176,6 +176,16 @@ def test_delete_notifications_delete_notification_type_for_default_time_if_no_da
assert len(Notification.query.filter_by(notification_type='email').all()) == 1 assert len(Notification.query.filter_by(notification_type='email').all()) == 1
def test_delete_notifications_does_try_to_delete_from_s3_when_letter_has_not_been_sent(sample_service, mocker):
mock_get_s3 = mocker.patch("app.dao.notifications_dao.get_s3_bucket_objects")
letter_template = create_template(service=sample_service, template_type='letter')
create_notification(template=letter_template, status='sending',
reference='LETTER_REF')
delete_notifications_created_more_than_a_week_ago_by_type('email')
mock_get_s3.assert_not_called()
def _create_templates(sample_service): def _create_templates(sample_service):
email_template = create_template(service=sample_service, template_type='email') email_template = create_template(service=sample_service, template_type='email')
sms_template = create_template(service=sample_service) sms_template = create_template(service=sample_service)