From 36e730221d8f559f58c5ba33c71232b65019ecb6 Mon Sep 17 00:00:00 2001 From: stvnrlly Date: Sun, 12 Feb 2023 21:55:24 -0500 Subject: [PATCH] more work on postage migration --- app/dao/notifications_dao.py | 2 - app/models.py | 5 --- app/notifications/validators.py | 9 +---- app/platform_stats/rest.py | 4 +- migrations/versions/0385_remove postage_.py | 39 ++++++++++--------- tests/app/dao/test_fact_billing_dao.py | 2 - tests/app/db.py | 1 - tests/app/notifications/test_validators.py | 2 +- .../test_send_one_off_notification.py | 1 - tests/app/test_model.py | 1 - .../notifications/test_get_notifications.py | 2 - tests/app/v2/template/test_get_template.py | 7 +--- 12 files changed, 25 insertions(+), 50 deletions(-) diff --git a/app/dao/notifications_dao.py b/app/dao/notifications_dao.py index cf75ba54b..d72660269 100644 --- a/app/dao/notifications_dao.py +++ b/app/dao/notifications_dao.py @@ -9,7 +9,6 @@ from notifications_utils.recipients import ( try_validate_and_format_phone_number, validate_and_format_email_address, ) -from notifications_utils.timezones import convert_local_timezone_to_utc from sqlalchemy import asc, desc, func, or_, union from sqlalchemy.orm import joinedload from sqlalchemy.orm.exc import NoResultFound @@ -21,7 +20,6 @@ from app import create_uuid, db from app.dao.dao_utils import autocommit from app.models import ( EMAIL_TYPE, - KEY_TYPE_NORMAL, KEY_TYPE_TEST, LETTER_TYPE, NOTIFICATION_CREATED, diff --git a/app/models.py b/app/models.py index 5a3caee33..39afb9947 100644 --- a/app/models.py +++ b/app/models.py @@ -6,11 +6,6 @@ from flask import current_app, url_for from notifications_utils.clients.encryption.encryption_client import ( EncryptionError, ) -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, diff --git a/app/notifications/validators.py b/app/notifications/validators.py index 62f3247d2..e71584ae6 100644 --- a/app/notifications/validators.py +++ b/app/notifications/validators.py @@ -5,7 +5,6 @@ from notifications_utils.clients.redis import ( daily_limit_cache_key, rate_limit_cache_key, ) -from notifications_utils.postal_address import PostalAddress from notifications_utils.recipients import ( get_international_phone_info, validate_and_format_email_address, @@ -19,7 +18,6 @@ from app.dao.service_letter_contact_dao import dao_get_letter_contact_by_id from app.dao.service_sms_sender_dao import dao_get_service_sms_senders_by_id from app.models import ( EMAIL_TYPE, - INTERNATIONAL_LETTERS, INTERNATIONAL_SMS_TYPE, KEY_TYPE_TEAM, KEY_TYPE_TEST, @@ -33,12 +31,7 @@ from app.notifications.process_notifications import ( from app.serialised_models import SerialisedTemplate from app.service.utils import service_allowed_to_send_to from app.utils import get_public_notify_type_text -from app.v2.errors import ( - BadRequestError, - RateLimitError, - TooManyRequestsError, - ValidationError, -) +from app.v2.errors import BadRequestError, RateLimitError, TooManyRequestsError REDIS_EXCEEDED_RATE_LIMIT_DURATION_SECONDS = Histogram( 'redis_exceeded_rate_limit_duration_seconds', diff --git a/app/platform_stats/rest.py b/app/platform_stats/rest.py index 6a4cea871..fe041b393 100644 --- a/app/platform_stats/rest.py +++ b/app/platform_stats/rest.py @@ -8,7 +8,6 @@ from app.dao.fact_billing_dao import ( fetch_daily_sms_provider_volumes_for_platform, fetch_daily_volumes_for_platform, fetch_letter_costs_and_totals_for_all_services, - fetch_letter_line_items_for_all_services, fetch_sms_billing_for_all_services, fetch_volumes_by_service, ) @@ -76,7 +75,6 @@ def get_data_for_billing_report(): sms_costs = fetch_sms_billing_for_all_services(start_date, end_date) letter_overview = fetch_letter_costs_and_totals_for_all_services(start_date, end_date) - combined = {} for s in sms_costs: if float(s.sms_cost) > 0: @@ -110,7 +108,7 @@ def get_data_for_billing_report(): "letter_cost": float(data.letter_cost), } combined[data.service_id] = letter_entry - + billing_details = fetch_billing_details_for_all_services() for service in billing_details: if service.service_id in combined: diff --git a/migrations/versions/0385_remove postage_.py b/migrations/versions/0385_remove postage_.py index 1e3b36a0c..e4ec15642 100644 --- a/migrations/versions/0385_remove postage_.py +++ b/migrations/versions/0385_remove postage_.py @@ -15,6 +15,16 @@ down_revision = '0384_remove_letter_branding_' def upgrade(): # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint('ft_billing_pkey', 'ft_billing', type_='primary') + op.create_primary_key('ft_billing_pkey', 'ft_billing', ['local_date', + 'template_id', + 'service_id', + 'notification_type', + 'provider', + 'rate_multiplier', + 'international', + 'rate']) + # we need to replace the entire notifications_all_time_view in order to update it op.execute("DROP VIEW notifications_all_time_view;") op.execute(""" @@ -78,15 +88,6 @@ def upgrade(): op.drop_column('templates', 'postage') op.drop_column('templates_history', 'postage') op.drop_column('ft_billing', 'postage') - # op.drop_constraint('ft_billing_pkey', 'ft_billing', type_='primary') - # op.create_primary_key('ft_billing_pkey', 'ft_billing', ['bst_date', - # 'template_id', - # 'service_id', - # 'notification_type', - # 'provider', - # 'rate_multiplier', - # 'international', - # 'rate']) # ### end Alembic commands ### @@ -98,16 +99,16 @@ def downgrade(): op.add_column('notifications', sa.Column('postage', sa.VARCHAR(), autoincrement=False, nullable=True)) op.add_column('notification_history', sa.Column('postage', sa.VARCHAR(), autoincrement=False, nullable=True)) - # op.drop_constraint('ft_billing_pkey', 'ft_billing', type_='primary') - # op.create_primary_key('ft_billing_pkey', 'ft_billing', ['bst_date', - # 'template_id', - # 'service_id', - # 'notification_type', - # 'provider', - # 'rate_multiplier', - # 'international', - # 'rate', - # 'postage']) + op.drop_constraint('ft_billing_pkey', 'ft_billing', type_='primary') + op.create_primary_key('ft_billing_pkey', 'ft_billing', ['local_date', + 'template_id', + 'service_id', + 'notification_type', + 'provider', + 'rate_multiplier', + 'international', + 'rate', + 'postage']) op.execute("DROP VIEW notifications_all_time_view;") op.execute(""" diff --git a/tests/app/dao/test_fact_billing_dao.py b/tests/app/dao/test_fact_billing_dao.py index d662afdc6..8ab9c8fd0 100644 --- a/tests/app/dao/test_fact_billing_dao.py +++ b/tests/app/dao/test_fact_billing_dao.py @@ -12,8 +12,6 @@ from app.dao.fact_billing_dao import ( fetch_billing_totals_for_year, fetch_daily_sms_provider_volumes_for_platform, fetch_daily_volumes_for_platform, - fetch_letter_costs_and_totals_for_all_services, - fetch_letter_line_items_for_all_services, fetch_monthly_billing_for_year, fetch_sms_billing_for_all_services, fetch_sms_free_allowance_remainder_until_date, diff --git a/tests/app/db.py b/tests/app/db.py index 5f649af00..e70f4d15c 100644 --- a/tests/app/db.py +++ b/tests/app/db.py @@ -29,7 +29,6 @@ from app.dao.users_dao import save_model_user from app.models import ( EMAIL_TYPE, KEY_TYPE_NORMAL, - LETTER_TYPE, MOBILE_TYPE, SMS_TYPE, AnnualBilling, diff --git a/tests/app/notifications/test_validators.py b/tests/app/notifications/test_validators.py index d18726350..9e826435c 100644 --- a/tests/app/notifications/test_validators.py +++ b/tests/app/notifications/test_validators.py @@ -7,7 +7,7 @@ from notifications_utils import SMS_CHAR_COUNT_LIMIT import app from app.dao import templates_dao -from app.models import EMAIL_TYPE, INTERNATIONAL_LETTERS, LETTER_TYPE, SMS_TYPE +from app.models import EMAIL_TYPE, LETTER_TYPE, SMS_TYPE from app.notifications.process_notifications import ( create_content_for_notification, ) diff --git a/tests/app/service/send_notification/test_send_one_off_notification.py b/tests/app/service/send_notification/test_send_one_off_notification.py index 3055387d4..8830a1a8a 100644 --- a/tests/app/service/send_notification/test_send_one_off_notification.py +++ b/tests/app/service/send_notification/test_send_one_off_notification.py @@ -12,7 +12,6 @@ from app.dao.service_guest_list_dao import ( from app.models import ( EMAIL_TYPE, KEY_TYPE_NORMAL, - LETTER_TYPE, MOBILE_TYPE, PRIORITY, SMS_TYPE, diff --git a/tests/app/test_model.py b/tests/app/test_model.py index 165007cef..6a3107e88 100644 --- a/tests/app/test_model.py +++ b/tests/app/test_model.py @@ -21,7 +21,6 @@ from app.models import ( ) from tests.app.db import ( create_inbound_number, - create_letter_contact, create_notification, create_reply_to_email, create_service, diff --git a/tests/app/v2/notifications/test_get_notifications.py b/tests/app/v2/notifications/test_get_notifications.py index 03c16b6b6..4657f5bab 100644 --- a/tests/app/v2/notifications/test_get_notifications.py +++ b/tests/app/v2/notifications/test_get_notifications.py @@ -1,5 +1,3 @@ -import datetime - import pytest from flask import json, url_for diff --git a/tests/app/v2/template/test_get_template.py b/tests/app/v2/template/test_get_template.py index 51445e96f..21dd78145 100644 --- a/tests/app/v2/template/test_get_template.py +++ b/tests/app/v2/template/test_get_template.py @@ -12,15 +12,12 @@ valid_version_params = [None, 1] @pytest.mark.parametrize("tmp_type, expected_name, expected_subject", [ (SMS_TYPE, 'sms Template Name', None), (EMAIL_TYPE, 'email Template Name', 'Template subject'), - (LETTER_TYPE, 'letter Template Name', 'Template subject') ]) @pytest.mark.parametrize("version", valid_version_params) def test_get_template_by_id_returns_200( client, sample_service, tmp_type, expected_name, expected_subject, version ): - letter_contact_block_id = None - - template = create_template(sample_service, template_type=tmp_type, contact_block_id=(letter_contact_block_id)) + template = create_template(sample_service, template_type=tmp_type) auth_header = create_service_authorization_header(service_id=sample_service.id) version_path = '/version/{}'.format(version) if version else '' @@ -44,7 +41,7 @@ def test_get_template_by_id_returns_200( "subject": expected_subject, 'name': expected_name, 'personalisation': {}, - 'letter_contact_block': letter_contact_block.contact_block if letter_contact_block_id else None, + 'letter_contact_block': None, } assert json_response == expected_response