Merge branch 'master' into firetext-inbound-sms-not-null-provider

Conflicts:
	tests/app/db.py
This commit is contained in:
Martyn Inglis
2017-06-09 11:56:32 +01:00
30 changed files with 1076 additions and 383 deletions

View File

@@ -1,7 +1,9 @@
Generic single-database configuration.
python application.py db migration to generate migration script.
python application.py db migrate to generate migration script.
python application.py db upgrade to upgrade db with script.
python application.py db downgrade to rollback db changes.
python application.py db current to show current script.

View File

@@ -0,0 +1,32 @@
"""empty message
Revision ID: 0093_data_gov_uk
Revises: 0092_add_inbound_provider
Create Date: 2017-06-05 16:15:17.744908
"""
# revision identifiers, used by Alembic.
revision = '0093_data_gov_uk'
down_revision = '0092_add_inbound_provider'
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
DATA_GOV_UK_ID = '123496d4-44cb-4324-8e0a-4187101f4bdc'
def upgrade():
op.execute("""INSERT INTO organisation VALUES (
'{}',
'',
'data_gov_uk_x2.png',
''
)""".format(DATA_GOV_UK_ID))
def downgrade():
op.execute("""
DELETE FROM organisation WHERE "id" = '{}'
""".format(DATA_GOV_UK_ID))

View File

@@ -1,22 +0,0 @@
"""empty message
Revision ID: 0093_populate_inbound_provider
Revises: 0092_add_inbound_provider
Create Date: 2017-05-22 10:23:43.939050
"""
# revision identifiers, used by Alembic.
revision = '0093_populate_inbound_provider'
down_revision = '0092_add_inbound_provider'
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
def upgrade():
op.execute("UPDATE inbound_sms SET provider='mmg' WHERE provider is null")
def downgrade():
op.execute("UPDATE inbound_sms SET provider=null WHERE provider = 'mmg'")

View File

@@ -0,0 +1,25 @@
"""empty message
Revision ID: 0094_job_stats_update
Revises: 0093_data_gov_uk
Create Date: 2017-06-06 14:37:30.051647
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '0094_job_stats_update'
down_revision = '0093_data_gov_uk'
def upgrade():
op.add_column('job_statistics', sa.Column('sent', sa.BigInteger(), nullable=True))
op.add_column('job_statistics', sa.Column('delivered', sa.BigInteger(), nullable=True))
op.add_column('job_statistics', sa.Column('failed', sa.BigInteger(), nullable=True))
def downgrade():
op.drop_column('job_statistics', 'sent')
op.drop_column('job_statistics', 'failed')
op.drop_column('job_statistics', 'delivered')

View File

@@ -0,0 +1,39 @@
"""empty message
Revision ID: 0095_migrate_existing_svc_perms
Revises: 0094_job_stats_update
Create Date: 2017-05-23 18:13:03.532095
"""
# revision identifiers, used by Alembic.
revision = '0095_migrate_existing_svc_perms'
down_revision = '0094_job_stats_update'
from alembic import op
import sqlalchemy as sa
migration_date = '2017-05-26 17:30:00.000000'
def upgrade():
def get_values(permission):
return "SELECT id, '{0}', '{1}' FROM services WHERE "\
"id NOT IN (SELECT service_id FROM service_permissions "\
"WHERE service_id=id AND permission='{0}')".format(permission, migration_date)
def get_values_if_flag(permission, flag):
return "SELECT id, '{0}', '{1}' FROM services WHERE "\
"{2} AND id NOT IN (SELECT service_id FROM service_permissions "\
"WHERE service_id=id AND permission='{0}')".format(permission, migration_date, flag)
op.execute("INSERT INTO service_permissions (service_id, permission, created_at) {}".format(get_values('sms')))
op.execute("INSERT INTO service_permissions (service_id, permission, created_at) {}".format(get_values('email')))
op.execute("INSERT INTO service_permissions (service_id, permission, created_at) {}".format(
get_values_if_flag('letter', 'can_send_letters')))
op.execute("INSERT INTO service_permissions (service_id, permission, created_at) {}".format(
get_values_if_flag('international_sms', 'can_send_international_sms')))
def downgrade():
op.execute("DELETE FROM service_permissions WHERE created_at = '{}'::timestamp".format(migration_date))

View File

@@ -0,0 +1,35 @@
"""empty message
Revision ID: 0096_update_job_stats
Revises: 0095_migrate_existing_svc_perms
Create Date: 2017-06-08 15:46:49.637642
"""
# revision identifiers, used by Alembic.
revision = '0096_update_job_stats'
down_revision = '0095_migrate_existing_svc_perms'
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
def upgrade():
query = "UPDATE job_statistics " \
"set sent = sms_sent + emails_sent + letters_sent, " \
" delivered = sms_delivered + emails_delivered, " \
" failed = sms_failed + emails_failed + letters_failed "
conn = op.get_bind()
conn.execute(query)
def downgrade():
query = "UPDATE job_statistics " \
"set sent = 0, " \
" delivered = 0, " \
" failed = 0 "
conn = op.get_bind()
conn.execute(query)

View File

@@ -1,14 +1,14 @@
"""empty message
Revision ID: 0094_notnull_inbound_provider
Revises: 0093_populate_inbound_provider
Revision ID: 0097_notnull_inbound_provider
Revises: 0096_update_job_stats
Create Date: 2017-06-02 16:50:11.698423
"""
# revision identifiers, used by Alembic.
revision = '0094_notnull_inbound_provider'
down_revision = '0093_populate_inbound_provider'
revision = '0097_notnull_inbound_provider'
down_revision = '0096_update_job_stats'
from alembic import op
import sqlalchemy as sa