diff --git a/app/models.py b/app/models.py index 959a6beb7..378a451ab 100644 --- a/app/models.py +++ b/app/models.py @@ -2553,7 +2553,7 @@ class ServiceBroadcastSettings(db.Model): channel = db.Column( db.String(255), db.ForeignKey('broadcast_channel_types.name'), nullable=False ) - provider = db.Column(db.String, nullable=True) + provider = db.Column(db.String, db.ForeignKey('broadcast_provider_types.name'), nullable=True) created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow) updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow) @@ -2564,6 +2564,12 @@ class BroadcastChannelTypes(db.Model): name = db.Column(db.String(255), primary_key=True) +class BroadcastProviderTypes(db.Model): + __tablename__ = 'broadcast_provider_types' + + name = db.Column(db.String(255), primary_key=True) + + class ServiceBroadcastProviderRestriction(db.Model): """ TODO: Drop this table as no longer used diff --git a/migrations/versions/0352_broadcast_provider_types.py b/migrations/versions/0352_broadcast_provider_types.py new file mode 100644 index 000000000..6d0d1fad2 --- /dev/null +++ b/migrations/versions/0352_broadcast_provider_types.py @@ -0,0 +1,32 @@ +""" + +Revision ID: 0352_broadcast_provider_types +Revises: 0351_unique_key_annual_billing +Create Date: 2021-05-05 15:07:22.146657 + +""" +from alembic import op +import sqlalchemy as sa + +revision = '0352_broadcast_provider_types' +down_revision = '0351_unique_key_annual_billing' + +PROVIDER_TYPES = ('ee', 'three', 'vodafone', 'o2', 'all') + + +def upgrade(): + op.create_table('broadcast_provider_types', + sa.Column('name', sa.String(length=255), nullable=False), + sa.PrimaryKeyConstraint('name')) + for provider in PROVIDER_TYPES: + op.execute(f"INSERT INTO broadcast_provider_types VALUES ('{provider}')") + op.create_foreign_key('service_broadcast_settings_provider_fkey', + 'service_broadcast_settings', + 'broadcast_provider_types', + ['provider'], + ['name']) + + +def downgrade(): + op.drop_constraint('service_broadcast_settings_provider_fkey', 'service_broadcast_settings', type_='foreignkey') + op.drop_table('broadcast_provider_types') diff --git a/tests/conftest.py b/tests/conftest.py index 16db669e2..085825367 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -120,7 +120,8 @@ def notify_db_session(notify_db, sms_providers): "broadcast_status_type", "invite_status_type", "service_callback_type", - "broadcast_channel_types"]: + "broadcast_channel_types", + "broadcast_provider_types"]: notify_db.engine.execute(tbl.delete()) notify_db.session.commit()