mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-21 16:01:15 -05:00
Removed an update statement to notifications.
It's a small change, but we should remove any db operations that are not necessary.
This commit is contained in:
@@ -3,7 +3,7 @@ from app.models import LETTER_TYPE
|
|||||||
from app.notifications.process_notifications import persist_notification
|
from app.notifications.process_notifications import persist_notification
|
||||||
|
|
||||||
|
|
||||||
def create_letter_notification(letter_data, template, api_key, status, reply_to_text=None):
|
def create_letter_notification(letter_data, template, api_key, status, reply_to_text=None, billable_units=None):
|
||||||
notification = persist_notification(
|
notification = persist_notification(
|
||||||
template_id=template.id,
|
template_id=template.id,
|
||||||
template_version=template.version,
|
template_version=template.version,
|
||||||
@@ -19,6 +19,7 @@ def create_letter_notification(letter_data, template, api_key, status, reply_to_
|
|||||||
reference=create_random_identifier(),
|
reference=create_random_identifier(),
|
||||||
client_reference=letter_data.get('reference'),
|
client_reference=letter_data.get('reference'),
|
||||||
status=status,
|
status=status,
|
||||||
reply_to_text=reply_to_text
|
reply_to_text=reply_to_text,
|
||||||
|
billable_units=billable_units
|
||||||
)
|
)
|
||||||
return notification
|
return notification
|
||||||
|
|||||||
@@ -70,7 +70,8 @@ def persist_notification(
|
|||||||
simulated=False,
|
simulated=False,
|
||||||
created_by_id=None,
|
created_by_id=None,
|
||||||
status=NOTIFICATION_CREATED,
|
status=NOTIFICATION_CREATED,
|
||||||
reply_to_text=None
|
reply_to_text=None,
|
||||||
|
billable_units=None
|
||||||
):
|
):
|
||||||
notification_created_at = created_at or datetime.utcnow()
|
notification_created_at = created_at or datetime.utcnow()
|
||||||
if not notification_id:
|
if not notification_id:
|
||||||
@@ -94,6 +95,7 @@ def persist_notification(
|
|||||||
created_by_id=created_by_id,
|
created_by_id=created_by_id,
|
||||||
status=status,
|
status=status,
|
||||||
reply_to_text=reply_to_text,
|
reply_to_text=reply_to_text,
|
||||||
|
billable_units=billable_units
|
||||||
)
|
)
|
||||||
|
|
||||||
if notification_type == SMS_TYPE:
|
if notification_type == SMS_TYPE:
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ from notifications_utils.recipients import try_validate_and_format_phone_number
|
|||||||
from app import api_user, authenticated_service, notify_celery, document_download_client
|
from app import api_user, authenticated_service, notify_celery, document_download_client
|
||||||
from app.clients.document_download import DocumentDownloadError
|
from app.clients.document_download import DocumentDownloadError
|
||||||
from app.config import QueueNames, TaskNames
|
from app.config import QueueNames, TaskNames
|
||||||
from app.dao.notifications_dao import dao_update_notification, update_notification_status_by_reference
|
from app.dao.notifications_dao import update_notification_status_by_reference
|
||||||
from app.dao.templates_dao import dao_create_template
|
from app.dao.templates_dao import dao_create_template
|
||||||
from app.dao.users_dao import get_user_by_id
|
from app.dao.users_dao import get_user_by_id
|
||||||
from app.letters.utils import upload_letter_pdf
|
from app.letters.utils import upload_letter_pdf
|
||||||
@@ -300,17 +300,16 @@ def process_precompiled_letter_notifications(*, letter_data, api_key, template,
|
|||||||
current_app.logger.exception(msg='Invalid PDF received')
|
current_app.logger.exception(msg='Invalid PDF received')
|
||||||
raise BadRequestError(message='Letter content is not a valid PDF', status_code=400)
|
raise BadRequestError(message='Letter content is not a valid PDF', status_code=400)
|
||||||
|
|
||||||
|
pages_per_sheet = 2
|
||||||
|
billable_units = math.ceil(pages / pages_per_sheet)
|
||||||
notification = create_letter_notification(letter_data=letter_data,
|
notification = create_letter_notification(letter_data=letter_data,
|
||||||
template=template,
|
template=template,
|
||||||
api_key=api_key,
|
api_key=api_key,
|
||||||
status=status,
|
status=status,
|
||||||
reply_to_text=reply_to_text)
|
reply_to_text=reply_to_text,
|
||||||
|
billable_units=billable_units)
|
||||||
|
|
||||||
filename = upload_letter_pdf(notification, letter_content, precompiled=True)
|
filename = upload_letter_pdf(notification, letter_content, precompiled=True)
|
||||||
pages_per_sheet = 2
|
|
||||||
notification.billable_units = math.ceil(pages / pages_per_sheet)
|
|
||||||
|
|
||||||
dao_update_notification(notification)
|
|
||||||
|
|
||||||
current_app.logger.info('Calling task scan-file for {}'.format(filename))
|
current_app.logger.info('Calling task scan-file for {}'.format(filename))
|
||||||
|
|
||||||
|
|||||||
@@ -40,3 +40,18 @@ def test_create_letter_notification_sets_reference(sample_letter_template, sampl
|
|||||||
notification = create_letter_notification(data, sample_letter_template, sample_api_key, NOTIFICATION_CREATED)
|
notification = create_letter_notification(data, sample_letter_template, sample_api_key, NOTIFICATION_CREATED)
|
||||||
|
|
||||||
assert notification.client_reference == 'foo'
|
assert notification.client_reference == 'foo'
|
||||||
|
|
||||||
|
|
||||||
|
def test_create_letter_notification_sets_billable_units(sample_letter_template, sample_api_key):
|
||||||
|
data = {
|
||||||
|
'personalisation': {
|
||||||
|
'address_line_1': 'The Queen',
|
||||||
|
'address_line_2': 'Buckingham Palace',
|
||||||
|
'postcode': 'SW1 1AA',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
notification = create_letter_notification(data, sample_letter_template, sample_api_key, NOTIFICATION_CREATED,
|
||||||
|
billable_units=3)
|
||||||
|
|
||||||
|
assert notification.billable_units == 3
|
||||||
|
|||||||
@@ -500,3 +500,22 @@ def test_persist_notification_increments_and_expires_redis_template_usage(
|
|||||||
'service-{}-template-usage-{}'.format(str(sample_template.service_id), day_in_key),
|
'service-{}-template-usage-{}'.format(str(sample_template.service_id), day_in_key),
|
||||||
current_app.config['EXPIRE_CACHE_EIGHT_DAYS']
|
current_app.config['EXPIRE_CACHE_EIGHT_DAYS']
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_persist_notification_with_billable_units_stores_correct_info(
|
||||||
|
sample_template,
|
||||||
|
):
|
||||||
|
persist_notification(
|
||||||
|
template_id=sample_template.id,
|
||||||
|
template_version=sample_template.version,
|
||||||
|
recipient="123 Main Street",
|
||||||
|
service=sample_template.service,
|
||||||
|
personalisation=None,
|
||||||
|
notification_type='letter',
|
||||||
|
api_key_id=None,
|
||||||
|
key_type="normal",
|
||||||
|
billable_units=3
|
||||||
|
)
|
||||||
|
persisted_notification = Notification.query.all()[0]
|
||||||
|
|
||||||
|
assert persisted_notification.billable_units == 3
|
||||||
|
|||||||
Reference in New Issue
Block a user