mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-20 15:31:15 -05:00
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from notifications_utils.postal_address import PostalAddress
|
|
|
|
from app import create_random_identifier
|
|
from app.models import LETTER_TYPE
|
|
from app.notifications.process_notifications import persist_notification
|
|
|
|
|
|
def create_letter_notification(
|
|
letter_data,
|
|
template,
|
|
service,
|
|
api_key,
|
|
status,
|
|
reply_to_text=None,
|
|
billable_units=None,
|
|
updated_at=None,
|
|
postage=None
|
|
):
|
|
notification = persist_notification(
|
|
template_id=template.id,
|
|
template_version=template.version,
|
|
# we only accept addresses_with_underscores from the API (from CSV we also accept dashes, spaces etc)
|
|
recipient=PostalAddress.from_personalisation(letter_data['personalisation']).normalised,
|
|
service=service,
|
|
personalisation=letter_data['personalisation'],
|
|
notification_type=LETTER_TYPE,
|
|
api_key_id=api_key.id,
|
|
key_type=api_key.key_type,
|
|
job_id=None,
|
|
job_row_number=None,
|
|
reference=create_random_identifier(),
|
|
client_reference=letter_data.get('reference'),
|
|
status=status,
|
|
reply_to_text=reply_to_text,
|
|
billable_units=billable_units,
|
|
# letter_data.get('postage') is only set for precompiled letters (if international it is set after sanitise)
|
|
# letters from a template will pass in 'europe' or 'rest-of-world' if None then use postage from template
|
|
postage=postage or letter_data.get('postage') or template.postage,
|
|
updated_at=updated_at
|
|
)
|
|
return notification
|