diff --git a/app/celery/tasks.py b/app/celery/tasks.py index 48e419781..d83bf7cc2 100644 --- a/app/celery/tasks.py +++ b/app/celery/tasks.py @@ -3,7 +3,7 @@ from collections import defaultdict, namedtuple from datetime import datetime from flask import current_app -from notifications_utils.columns import Columns +from notifications_utils.insensitive_dict import InsensitiveDict from notifications_utils.postal_address import PostalAddress from notifications_utils.recipients import RecipientCSV from notifications_utils.timezones import convert_utc_to_bst @@ -351,7 +351,7 @@ def save_letter( notification = encryption.decrypt(encrypted_notification) postal_address = PostalAddress.from_personalisation( - Columns(notification['personalisation']) + InsensitiveDict(notification['personalisation']) ) service = SerialisedService.from_id(service_id) diff --git a/app/models.py b/app/models.py index 2486a4045..c6269e421 100644 --- a/app/models.py +++ b/app/models.py @@ -3,8 +3,11 @@ import itertools import uuid from flask import current_app, url_for -from notifications_utils.columns import Columns +from notifications_utils.insensitive_dict import InsensitiveDict from notifications_utils.letter_timings import get_letter_timings +from notifications_utils.postal_address import ( + address_lines_1_to_6_and_postcode_keys, +) from notifications_utils.recipients import ( InvalidEmailError, InvalidPhoneError, @@ -1692,14 +1695,20 @@ class Notification(db.Model): } if self.notification_type == LETTER_TYPE: - col = Columns(self.personalisation) - serialized['line_1'] = col.get('address_line_1') - serialized['line_2'] = col.get('address_line_2') - serialized['line_3'] = col.get('address_line_3') - serialized['line_4'] = col.get('address_line_4') - serialized['line_5'] = col.get('address_line_5') - serialized['line_6'] = col.get('address_line_6') - serialized['postcode'] = col.get('postcode') + personalisation = InsensitiveDict(self.personalisation) + + ( + serialized['line_1'], + serialized['line_2'], + serialized['line_3'], + serialized['line_4'], + serialized['line_5'], + serialized['line_6'], + serialized['postcode'], + ) = ( + personalisation.get(line) for line in address_lines_1_to_6_and_postcode_keys + ) + serialized['estimated_delivery'] = \ get_letter_timings(serialized['created_at'], postage=self.postage)\ .earliest_delivery\ diff --git a/requirements.in b/requirements.in index 6868d299d..9cba7ec2d 100644 --- a/requirements.in +++ b/requirements.in @@ -31,7 +31,7 @@ notifications-python-client==6.0.2 # PaaS awscli-cwlogs==1.4.6 -notifications-utils @ git+https://github.com/alphagov/notifications-utils.git@51.3.0 +notifications-utils @ git+https://github.com/alphagov/notifications-utils.git@53.0.0 # gds-metrics requires prometheseus 0.2.0, override that requirement as 0.7.1 brings significant performance gains prometheus-client==0.10.1 diff --git a/requirements.txt b/requirements.txt index a90098a04..0b21f21ea 100644 --- a/requirements.txt +++ b/requirements.txt @@ -148,7 +148,7 @@ mistune==0.8.4 # via notifications-utils notifications-python-client==6.0.2 # via -r requirements.in -notifications-utils @ git+https://github.com/alphagov/notifications-utils.git@51.3.0 +notifications-utils @ git+https://github.com/alphagov/notifications-utils.git@53.0.0 # via -r requirements.in orderedset==2.0.3 # via notifications-utils diff --git a/tests/app/celery/test_tasks.py b/tests/app/celery/test_tasks.py index deb82afc1..08bba3c38 100644 --- a/tests/app/celery/test_tasks.py +++ b/tests/app/celery/test_tasks.py @@ -7,7 +7,7 @@ import pytest import requests_mock from celery.exceptions import Retry from freezegun import freeze_time -from notifications_utils.columns import Row +from notifications_utils.recipients import Row from notifications_utils.template import ( LetterPrintTemplate, PlainTextEmailTemplate,