diff --git a/migrations/versions/0088_migrate_existing_svc_perms.py b/migrations/versions/0088_migrate_existing_svc_perms.py index 2556d5bf0..44d830cf4 100644 --- a/migrations/versions/0088_migrate_existing_svc_perms.py +++ b/migrations/versions/0088_migrate_existing_svc_perms.py @@ -12,26 +12,29 @@ down_revision = '0087_scheduled_notifications' from alembic import op import sqlalchemy as sa +import time + +migration_date = time.strftime('2017-05-26 17:30:00.000000') def upgrade(): def get_values(permission): - return "SELECT id, '{0}' FROM services WHERE "\ + 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) + "WHERE service_id=id AND permission='{0}')".format(permission, migration_date) def get_values_if_flag(permission, flag): - return "SELECT id, '{0}' FROM services WHERE "\ - "{1} AND id NOT IN (SELECT service_id FROM service_permissions "\ - "WHERE service_id=id AND permission='{0}')".format(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) {}".format(get_values('sms'))) - op.execute("INSERT INTO service_permissions (service_id, permission) {}".format(get_values('email'))) - op.execute("INSERT INTO service_permissions (service_id, permission) {}".format( + 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) {}".format( + 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 IS NULL") + op.execute("DELETE FROM service_permissions WHERE created_at = '{}'::timestamp".format(migration_date))