From 4f65ca544780be19d84117e8d0012bf507f72ad8 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Thu, 26 Oct 2017 15:25:38 +0100 Subject: [PATCH 1/2] Create a new table to map a notification to a SMS sender. There is also some minor db model updates here so that the python db model match the db --- app/models.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/app/models.py b/app/models.py index 8df375279..8cc6cc19d 100644 --- a/app/models.py +++ b/app/models.py @@ -324,7 +324,7 @@ class ServiceSmsSender(db.Model): id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) sms_sender = db.Column(db.String(11), nullable=False) - service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), index=True, nullable=False) + service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), index=True, nullable=False, unique=False) service = db.relationship(Service, backref=db.backref("service_sms_senders", uselist=True)) is_default = db.Column(db.Boolean, nullable=False, default=True) inbound_number_id = db.Column(UUID(as_uuid=True), db.ForeignKey('inbound_numbers.id'), @@ -881,7 +881,7 @@ DVLA_RESPONSE_STATUS_SENT = 'Sent' class NotificationStatusTypes(db.Model): __tablename__ = 'notification_status_types' - name = db.Column(db.String(255), primary_key=True) + name = db.Column(db.String(), primary_key=True) class Notification(db.Model): @@ -1507,3 +1507,24 @@ class NotificationEmailReplyTo(db.Model): nullable=False, primary_key=True ) + + +class NotificationSmsSender(db.Model): + __tablename__ = "notification_to_sms_sender" + + notification_id = db.Column( + UUID(as_uuid=True), + db.ForeignKey('notifications.id'), + unique=True, + index=True, + nullable=False, + primary_key=True + ) + service_sms_sender_id = db.Column( + UUID(as_uuid=True), + db.ForeignKey('service_sms_senders.id'), + unique=False, + index=True, + nullable=False, + primary_key=True + ) From b048b2c3bf5865ed8acbe3db2d8c0b761abde760 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Thu, 26 Oct 2017 16:40:38 +0100 Subject: [PATCH 2/2] DB update script for new table --- .../versions/0128_noti_to_sms_sender.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 migrations/versions/0128_noti_to_sms_sender.py diff --git a/migrations/versions/0128_noti_to_sms_sender.py b/migrations/versions/0128_noti_to_sms_sender.py new file mode 100644 index 000000000..75ca2f14e --- /dev/null +++ b/migrations/versions/0128_noti_to_sms_sender.py @@ -0,0 +1,44 @@ +""" + +Revision ID: 0128_noti_to_sms_sender +Revises: 0127_remove_unique_constraint +Create Date: 2017-10-26 15:17:00.752706 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0128_noti_to_sms_sender' +down_revision = '0127_remove_unique_constraint' + + +def upgrade(): + op.create_index(op.f('ix_service_letter_contacts_service_id'), 'service_letter_contacts', ['service_id'], + unique=False) + op.drop_index('ix_service_letter_contact_service_id', table_name='service_letter_contacts') + op.create_index(op.f('ix_service_sms_senders_service_id'), 'service_sms_senders', ['service_id'], unique=False) + op.execute( + 'ALTER TABLE templates_history ALTER COLUMN template_type TYPE template_type USING template_type::template_type') + + # new table + op.create_table('notification_to_sms_sender', + sa.Column('notification_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('service_sms_sender_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.ForeignKeyConstraint(['notification_id'], ['notifications.id'], ), + sa.ForeignKeyConstraint(['service_sms_sender_id'], ['service_sms_senders.id'], ), + sa.PrimaryKeyConstraint('notification_id', 'service_sms_sender_id') + ) + op.create_index(op.f('ix_notification_to_sms_sender_notification_id'), 'notification_to_sms_sender', ['notification_id'], unique=True) + op.create_index(op.f('ix_notification_to_sms_sender_service_sms_sender_id'), 'notification_to_sms_sender', ['service_sms_sender_id'], unique=False) + + +def downgrade(): + op.drop_index(op.f('ix_service_sms_senders_service_id'), table_name='service_sms_senders') + op.create_index('ix_service_letter_contact_service_id', 'service_letter_contacts', ['service_id'], unique=False) + op.drop_index(op.f('ix_service_letter_contacts_service_id'), table_name='service_letter_contacts') + op.alter_column('templates_history', 'template_type', + type_=sa.VARCHAR(), + existing_nullable=False) + + op.drop_table('notification_to_sms_sender')