From 26b35c5d15635bd9a9ea6a82eb54b26a35bebff0 Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Wed, 26 Apr 2017 10:22:20 +0100 Subject: [PATCH 1/3] Add intl notificiation fields --- app/models.py | 10 ++++++ .../versions/0076_add_intl_notification.py | 32 +++++++++++++++++++ .../test_process_notification.py | 30 ++++++++++------- 3 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 migrations/versions/0076_add_intl_notification.py diff --git a/app/models.py b/app/models.py index 71957d99c..d21c53ff0 100644 --- a/app/models.py +++ b/app/models.py @@ -662,6 +662,12 @@ class Notification(db.Model): foreign(template_version) == remote(TemplateHistory.version) )) + client_reference = db.Column(db.String, index=True, nullable=True) + + international = db.Column(db.Boolean, nullable=False, default=False) + phone_prefix = db.Column(db.String, nullable=True) + rate_multiplier = db.Column(db.Numeric(), nullable=True) + @property def personalisation(self): if self._personalisation: @@ -835,6 +841,10 @@ class NotificationHistory(db.Model, HistoryModel): reference = db.Column(db.String, nullable=True, index=True) client_reference = db.Column(db.String, nullable=True) + international = db.Column(db.Boolean, nullable=False, default=False) + phone_prefix = db.Column(db.String, nullable=True) + rate_multiplier = db.Column(db.Numeric(), nullable=True) + @classmethod def from_original(cls, notification): history = super().from_original(notification) diff --git a/migrations/versions/0076_add_intl_notification.py b/migrations/versions/0076_add_intl_notification.py new file mode 100644 index 000000000..13a74aba6 --- /dev/null +++ b/migrations/versions/0076_add_intl_notification.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: 0076_add_intl_notification +Revises: 0075_create_rates_table +Create Date: 2017-04-25 11:34:43.229494 + +""" + +# revision identifiers, used by Alembic. +revision = '0076_add_intl_notification' +down_revision = '0075_create_rates_table' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + op.add_column('notification_history', sa.Column('international', sa.Boolean(), nullable=True)) + op.add_column('notification_history', sa.Column('phone_prefix', sa.String(), nullable=True)) + op.add_column('notification_history', sa.Column('rate_multiplier', sa.Numeric(), nullable=True)) + op.add_column('notifications', sa.Column('international', sa.Boolean(), nullable=True)) + op.add_column('notifications', sa.Column('phone_prefix', sa.String(), nullable=True)) + op.add_column('notifications', sa.Column('rate_multiplier', sa.Numeric(), nullable=True)) + + +def downgrade(): + op.drop_column('notifications', 'rate_multiplier') + op.drop_column('notifications', 'phone_prefix') + op.drop_column('notifications', 'international') + op.drop_column('notification_history', 'rate_multiplier') + op.drop_column('notification_history', 'phone_prefix') + op.drop_column('notification_history', 'international') diff --git a/tests/app/notifications/test_process_notification.py b/tests/app/notifications/test_process_notification.py index 9e428a0ab..533dd1a84 100644 --- a/tests/app/notifications/test_process_notification.py +++ b/tests/app/notifications/test_process_notification.py @@ -169,18 +169,20 @@ def test_persist_notification_with_optionals(sample_job, sample_api_key, mocker) 'app.notifications.process_notifications.redis_store.get_all_from_hash') n_id = uuid.uuid4() created_at = datetime.datetime(2016, 11, 11, 16, 8, 18) - persist_notification(template_id=sample_job.template.id, - template_version=sample_job.template.version, - recipient='+447111111111', - service=sample_job.service, - personalisation=None, notification_type='sms', - api_key_id=sample_api_key.id, - key_type=sample_api_key.key_type, - created_at=created_at, - job_id=sample_job.id, - job_row_number=10, - client_reference="ref from client", - notification_id=n_id) + persist_notification( + template_id=sample_job.template.id, + template_version=sample_job.template.version, + recipient='+447111111111', + service=sample_job.service, + personalisation=None, notification_type='sms', + api_key_id=sample_api_key.id, + key_type=sample_api_key.key_type, + created_at=created_at, + job_id=sample_job.id, + job_row_number=10, + client_reference="ref from client", + notification_id=n_id + ) assert Notification.query.count() == 1 assert NotificationHistory.query.count() == 1 persisted_notification = Notification.query.all()[0] @@ -192,6 +194,10 @@ def test_persist_notification_with_optionals(sample_job, sample_api_key, mocker) mock_service_template_cache.assert_called_once_with(cache_key_for_service_template_counter(sample_job.service_id)) assert persisted_notification.client_reference == "ref from client" assert persisted_notification.reference is None + assert persisted_notification.international is False + assert persisted_notification.phone_prefix is None + assert persisted_notification.rate_multiplier is None + @freeze_time("2016-01-01 11:09:00.061258") From 014a29170caea10621759f3b1752baed36318d52 Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Wed, 26 Apr 2017 11:31:58 +0100 Subject: [PATCH 2/3] Rebase off master --- ...intl_notification.py => 0077_add_intl_notification.py} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename migrations/versions/{0076_add_intl_notification.py => 0077_add_intl_notification.py} (86%) diff --git a/migrations/versions/0076_add_intl_notification.py b/migrations/versions/0077_add_intl_notification.py similarity index 86% rename from migrations/versions/0076_add_intl_notification.py rename to migrations/versions/0077_add_intl_notification.py index 13a74aba6..0e1d513c5 100644 --- a/migrations/versions/0076_add_intl_notification.py +++ b/migrations/versions/0077_add_intl_notification.py @@ -1,14 +1,14 @@ """empty message -Revision ID: 0076_add_intl_notification -Revises: 0075_create_rates_table +Revision ID: 0077_add_intl_notification +Revises: 0076_add_intl_flag_to_provider Create Date: 2017-04-25 11:34:43.229494 """ # revision identifiers, used by Alembic. -revision = '0076_add_intl_notification' -down_revision = '0075_create_rates_table' +revision = '0077_add_intl_notification' +down_revision = '0076_add_intl_flag_to_provider' from alembic import op import sqlalchemy as sa From 68edd7a33ff7896092652b2d6d65335e0657e8b4 Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Wed, 26 Apr 2017 11:52:03 +0100 Subject: [PATCH 3/3] Fix PEP issues :-| --- .../test_process_notification.py | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/app/notifications/test_process_notification.py b/tests/app/notifications/test_process_notification.py index 533dd1a84..33ebdc727 100644 --- a/tests/app/notifications/test_process_notification.py +++ b/tests/app/notifications/test_process_notification.py @@ -170,19 +170,20 @@ def test_persist_notification_with_optionals(sample_job, sample_api_key, mocker) n_id = uuid.uuid4() created_at = datetime.datetime(2016, 11, 11, 16, 8, 18) persist_notification( - template_id=sample_job.template.id, - template_version=sample_job.template.version, - recipient='+447111111111', - service=sample_job.service, - personalisation=None, notification_type='sms', - api_key_id=sample_api_key.id, - key_type=sample_api_key.key_type, - created_at=created_at, - job_id=sample_job.id, - job_row_number=10, - client_reference="ref from client", - notification_id=n_id - ) + template_id=sample_job.template.id, + template_version=sample_job.template.version, + recipient='+447111111111', + service=sample_job.service, + personalisation=None, + notification_type='sms', + api_key_id=sample_api_key.id, + key_type=sample_api_key.key_type, + created_at=created_at, + job_id=sample_job.id, + job_row_number=10, + client_reference="ref from client", + notification_id=n_id + ) assert Notification.query.count() == 1 assert NotificationHistory.query.count() == 1 persisted_notification = Notification.query.all()[0] @@ -199,7 +200,6 @@ def test_persist_notification_with_optionals(sample_job, sample_api_key, mocker) assert persisted_notification.rate_multiplier is None - @freeze_time("2016-01-01 11:09:00.061258") def test_persist_notification_increments_cache_if_key_exists(sample_template, sample_api_key, mocker): mock_incr = mocker.patch('app.notifications.process_notifications.redis_store.incr')