From 86929fd6b69e1103031eaa72dfe603f10429a66a Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Tue, 5 Sep 2017 17:53:47 +0100 Subject: [PATCH] Create a table for service_sms_senders. Migration from inbound_number to service_sms_senders. May need to pull out the migration into another PR. --- app/models.py | 15 +++++ .../versions/0118_service_sms_senders.py | 39 +++++++++++++ .../0119_insert_service_sms_senders.py | 55 +++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 migrations/versions/0118_service_sms_senders.py create mode 100644 migrations/versions/0119_insert_service_sms_senders.py diff --git a/app/models.py b/app/models.py index 89e4d56b8..304a4b4e1 100644 --- a/app/models.py +++ b/app/models.py @@ -278,6 +278,21 @@ class InboundNumber(db.Model): } +class ServiceSmsSender(db.Model): + __tablename__ = "service_sms_senders" + + 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'), unique=True, index=True, nullable=False) + service = db.relationship(Service, backref=db.backref("service_sms_senders", uselist=False)) + is_default = db.Column(db.Boolean, nullable=False, default=True) + inbound_number_id = db.Column(UUID(as_uuid=True), db.ForeignKey('inbound_numbers.id'), + unique=True, index=True, nullable=True) + inbound_number = db.relationship(InboundNumber, backref=db.backref("inbound_number", uselist=False)) + created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False) + updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow) + + class ServicePermission(db.Model): __tablename__ = "service_permissions" diff --git a/migrations/versions/0118_service_sms_senders.py b/migrations/versions/0118_service_sms_senders.py new file mode 100644 index 000000000..db0c1724f --- /dev/null +++ b/migrations/versions/0118_service_sms_senders.py @@ -0,0 +1,39 @@ +"""empty message + +Revision ID: 0118_service_sms_senders +Revises: 0117_international_sms_notify +Create Date: 2017-09-05 17:29:38.921045 + +""" + +# revision identifiers, used by Alembic. +revision = '0118_service_sms_senders' +down_revision = '0117_international_sms_notify' + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + + +def upgrade(): + op.create_table('service_sms_senders', + sa.Column('id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('sms_sender', sa.String(length=11), nullable=False), + sa.Column('service_id', postgresql.UUID(as_uuid=True), nullable=False), + sa.Column('is_default', sa.Boolean(), nullable=False), + sa.Column('inbound_number_id', postgresql.UUID(as_uuid=True), nullable=True), + sa.Column('created_at', sa.DateTime(), nullable=False), + sa.Column('updated_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['inbound_number_id'], ['inbound_numbers.id'], ), + sa.ForeignKeyConstraint(['service_id'], ['services.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_index(op.f('ix_service_sms_senders_inbound_number_id'), 'service_sms_senders', ['inbound_number_id'], + unique=True) + op.create_index(op.f('ix_service_sms_senders_service_id'), 'service_sms_senders', ['service_id'], unique=True) + + +def downgrade(): + op.drop_index(op.f('ix_service_sms_senders_service_id'), table_name='service_sms_senders') + op.drop_index(op.f('ix_service_sms_senders_inbound_number_id'), table_name='service_sms_senders') + op.drop_table('service_sms_senders') diff --git a/migrations/versions/0119_insert_service_sms_senders.py b/migrations/versions/0119_insert_service_sms_senders.py new file mode 100644 index 000000000..d7de69ac3 --- /dev/null +++ b/migrations/versions/0119_insert_service_sms_senders.py @@ -0,0 +1,55 @@ +"""empty message + +Revision ID: 0119_insert_service_sms_senders +Revises: 0118_service_sms_senders +Create Date: 2017-09-05 17:21:14.816199 + +""" +import uuid + +from alembic import op + +revision = '0119_insert_service_sms_senders' +down_revision = '0118_service_sms_senders' + + +def upgrade(): + query = """SELECT id, number, service_id + FROM inbound_numbers + WHERE service_id is not null""" + + conn = op.get_bind() + results = conn.execute(query) + res = results.fetchall() + + for x in res: + op.execute( + """ + INSERT INTO service_sms_senders + ( + id, + sms_sender, + service_id, + inbound_number_id, + is_default, + created_at + ) + VALUES + ( + '{}', + '{}', + '{}', + '{}', + True, + now() + ) + """.format(uuid.uuid4(), x.number, x.service_id, x.id) + ) + + +def downgrade(): + op.execute( + """ + DELETE FROM service_sms_senders + """ + )