Use dao_update_notification to update billable_units for letter notifications

This commit is contained in:
Ken Tsang
2017-12-14 11:38:17 +00:00
parent f23074596b
commit 0045cd6b72
2 changed files with 6 additions and 30 deletions

View File

@@ -1,4 +1,3 @@
from datetime import datetime
from flask import current_app from flask import current_app
import math import math
from requests import ( from requests import (
@@ -14,7 +13,7 @@ from app.config import QueueNames
from app.dao.notifications_dao import ( from app.dao.notifications_dao import (
get_notification_by_id, get_notification_by_id,
update_notification_status_by_id, update_notification_status_by_id,
dao_update_notifications_by_reference dao_update_notification
) )
from app.statsd_decorators import statsd from app.statsd_decorators import statsd
@@ -35,22 +34,12 @@ def create_letters_pdf(self, notification_id):
notification.id, notification.reference, notification.created_at, len(pdf_data))) notification.id, notification.reference, notification.created_at, len(pdf_data)))
s3.upload_letters_pdf(reference=notification.reference, crown=notification.service.crown, filedata=pdf_data) s3.upload_letters_pdf(reference=notification.reference, crown=notification.service.crown, filedata=pdf_data)
updated_count = dao_update_notifications_by_reference( notification.billable_units = billable_units
references=[notification.reference], dao_update_notification(notification)
update_dict={
"billable_units": billable_units,
"updated_at": datetime.utcnow()
}
)
if not updated_count: current_app.logger.info(
msg = "Update letter notification billing units failed: notification not found with reference {}".format( 'Letter notification reference {reference}: billable units set to {billable_units}'.format(
notification.reference) reference=str(notification.reference), billable_units=billable_units))
current_app.logger.error(msg)
else:
current_app.logger.info(
'Letter notification reference {reference}: billable units set to {billable_units}'.format(
reference=str(notification.reference), billable_units=billable_units))
except (RequestException, BotoClientError): except (RequestException, BotoClientError):
try: try:

View File

@@ -97,19 +97,6 @@ def test_create_letters_pdf_sets_billable_units(mocker, sample_letter_notificati
assert noti.billable_units == 1 assert noti.billable_units == 1
def test_create_letters_pdf_handles_update_failure(mocker, sample_letter_notification):
mocker.patch('app.celery.letters_pdf_tasks.get_letters_pdf', return_value=(b'\x00\x01', 1))
mocker.patch('app.celery.tasks.s3.upload_letters_pdf')
mocker.patch('app.celery.tasks.letters_pdf_tasks.dao_update_notifications_by_reference', return_value=0)
mock_error_logger = mocker.patch('app.celery.letters_pdf_tasks.current_app.logger.error')
create_letters_pdf(sample_letter_notification.id)
mock_error_logger.assert_called_once_with(
"Update letter notification billing units failed: notification not found with reference {}".format(
sample_letter_notification.reference))
def test_create_letters_pdf_non_existent_notification(notify_api, mocker, fake_uuid): def test_create_letters_pdf_non_existent_notification(notify_api, mocker, fake_uuid):
with pytest.raises(expected_exception=NoResultFound): with pytest.raises(expected_exception=NoResultFound):
create_letters_pdf(fake_uuid) create_letters_pdf(fake_uuid)