From 51646af92e01586742fedf675458bcd537d3506b Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Tue, 3 May 2022 14:42:59 +0100 Subject: [PATCH] remove provider_rates table this was added five years ago but never used. if we want to bring back variable rates per client we might as well get a fresh start since a lot has changed since then. --- app/commands.py | 17 ----------- app/dao/provider_rates_dao.py | 11 ------- app/models.py | 10 ------- app/schemas.py | 4 +-- .../versions/0372_remove_provider_rates.py | 30 +++++++++++++++++++ tests/app/conftest.py | 2 -- tests/app/dao/test_provider_rates_dao.py | 18 ----------- 7 files changed, 32 insertions(+), 60 deletions(-) delete mode 100644 app/dao/provider_rates_dao.py create mode 100644 migrations/versions/0372_remove_provider_rates.py delete mode 100644 tests/app/dao/test_provider_rates_dao.py diff --git a/app/commands.py b/app/commands.py index 67e79aebd..e217d9e29 100644 --- a/app/commands.py +++ b/app/commands.py @@ -4,7 +4,6 @@ import itertools import os import uuid from datetime import datetime, timedelta -from decimal import Decimal import click import flask @@ -42,9 +41,6 @@ from app.dao.organisation_dao import ( dao_get_organisation_by_id, ) from app.dao.permissions_dao import permission_dao -from app.dao.provider_rates_dao import ( - create_provider_rates as dao_create_provider_rates, -) from app.dao.services_dao import ( dao_fetch_all_services_by_user, dao_fetch_all_services_created_by_user, @@ -61,7 +57,6 @@ from app.dao.users_dao import ( from app.models import ( KEY_TYPE_TEST, NOTIFICATION_CREATED, - PROVIDERS, SMS_TYPE, AnnualBilling, Domain, @@ -108,18 +103,6 @@ class notify_command: return wrapper -@notify_command() -@click.option('-p', '--provider_name', required=True, type=click.Choice(PROVIDERS)) -@click.option('-c', '--cost', required=True, help='Cost (pence) per message including decimals', type=float) -@click.option('-d', '--valid_from', required=True, type=click_dt(format='%Y-%m-%dT%H:%M:%S')) -def create_provider_rates(provider_name, cost, valid_from): - """ - Backfill rates for a given provider - """ - cost = Decimal(cost) - dao_create_provider_rates(provider_name, valid_from, cost) - - @notify_command() @click.option('-u', '--user_email_prefix', required=True, help=""" Functional test user email prefix. eg "notify-test-preview" diff --git a/app/dao/provider_rates_dao.py b/app/dao/provider_rates_dao.py deleted file mode 100644 index e30097ce3..000000000 --- a/app/dao/provider_rates_dao.py +++ /dev/null @@ -1,11 +0,0 @@ -from app import db -from app.dao.dao_utils import autocommit -from app.models import ProviderDetails, ProviderRates - - -@autocommit -def create_provider_rates(provider_identifier, valid_from, rate): - provider = ProviderDetails.query.filter_by(identifier=provider_identifier).one() - - provider_rates = ProviderRates(provider_id=provider.id, valid_from=valid_from, rate=rate) - db.session.add(provider_rates) diff --git a/app/models.py b/app/models.py index 169b8ca3f..4e7d95320 100644 --- a/app/models.py +++ b/app/models.py @@ -1146,16 +1146,6 @@ NOTIFICATION_TYPE = [EMAIL_TYPE, SMS_TYPE, LETTER_TYPE] notification_types = db.Enum(*NOTIFICATION_TYPE, name='notification_type') -class ProviderRates(db.Model): - __tablename__ = 'provider_rates' - - id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) - valid_from = db.Column(db.DateTime, nullable=False) - rate = db.Column(db.Numeric(), nullable=False) - provider_id = db.Column(UUID(as_uuid=True), db.ForeignKey('provider_details.id'), index=True, nullable=False) - provider = db.relationship('ProviderDetails', backref=db.backref('provider_rates', lazy='dynamic')) - - class ProviderDetails(db.Model): __tablename__ = 'provider_details' diff --git a/app/schemas.py b/app/schemas.py index 47bfe2087..7b9e40144 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -208,7 +208,7 @@ class ProviderDetailsSchema(BaseSchema): class Meta(BaseSchema.Meta): model = models.ProviderDetails - exclude = ("provider_rates", "provider_stats") + exclude = ("provider_stats",) strict = True @@ -217,7 +217,7 @@ class ProviderDetailsHistorySchema(BaseSchema): class Meta(BaseSchema.Meta): model = models.ProviderDetailsHistory - exclude = ("provider_rates", "provider_stats") + exclude = ("provider_stats",) strict = True diff --git a/migrations/versions/0372_remove_provider_rates.py b/migrations/versions/0372_remove_provider_rates.py new file mode 100644 index 000000000..618b4f0a8 --- /dev/null +++ b/migrations/versions/0372_remove_provider_rates.py @@ -0,0 +1,30 @@ +""" + +Revision ID: 0372_remove_provider_rates +Revises: 0371_fix_apr_2022_sms_rate +Create Date: 2022-04-26 09:39:45.260951 + +""" + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0372_remove_provider_rates' +down_revision = '0371_fix_apr_2022_sms_rate' + + +def upgrade(): + op.drop_table('provider_rates') + + +def downgrade(): + op.create_table( + 'provider_rates', + sa.Column('id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('valid_from', sa.DateTime(), nullable=False), + sa.Column('provider_id', postgresql.UUID(as_uuid=True), nullable=True), + sa.Column('rate', sa.Numeric(), nullable=False), + sa.PrimaryKeyConstraint('id'), + sa.ForeignKeyConstraint(['provider_id'], ['provider_details.id'], ), + ) diff --git a/tests/app/conftest.py b/tests/app/conftest.py index 71ab86795..962923775 100644 --- a/tests/app/conftest.py +++ b/tests/app/conftest.py @@ -43,7 +43,6 @@ from app.models import ( Permission, ProviderDetails, ProviderDetailsHistory, - ProviderRates, Service, ServiceEmailReplyTo, ServiceGuestList, @@ -954,7 +953,6 @@ def restore_provider_details(notify_db, notify_db_session): yield # also delete these as they depend on provider_details - ProviderRates.query.delete() ProviderDetails.query.delete() ProviderDetailsHistory.query.delete() notify_db.session.commit() diff --git a/tests/app/dao/test_provider_rates_dao.py b/tests/app/dao/test_provider_rates_dao.py deleted file mode 100644 index 9b3437ae8..000000000 --- a/tests/app/dao/test_provider_rates_dao.py +++ /dev/null @@ -1,18 +0,0 @@ -from datetime import datetime -from decimal import Decimal - -from app.dao.provider_rates_dao import create_provider_rates -from app.models import ProviderDetails, ProviderRates - - -def test_create_provider_rates(notify_db, notify_db_session, mmg_provider): - now = datetime.now() - rate = Decimal("1.00000") - - provider = ProviderDetails.query.filter_by(identifier=mmg_provider.identifier).one() - - create_provider_rates(mmg_provider.identifier, now, rate) - assert ProviderRates.query.count() == 1 - assert ProviderRates.query.first().rate == rate - assert ProviderRates.query.first().valid_from == now - assert ProviderRates.query.first().provider_id == provider.id