Merge pull request #659 from GSA/ADMIN-97_Resend_Expired_Invites

Admin 97 resend expired invites
This commit is contained in:
Carlo Costino
2023-12-20 14:05:41 -05:00
committed by GitHub
303 changed files with 450 additions and 460 deletions
+15 -34
View File
@@ -117,9 +117,7 @@ def purge_functional_test_data(user_email_prefix):
current_app.logger.error("Can only be run in development") current_app.logger.error("Can only be run in development")
return return
users = User.query.filter( users = User.query.filter(User.email_address.like(f"{user_email_prefix}%")).all()
User.email_address.like("{}%".format(user_email_prefix))
).all()
for usr in users: for usr in users:
# Make sure the full email includes a uuid in it # Make sure the full email includes a uuid in it
# Just in case someone decides to use a similar email address. # Just in case someone decides to use a similar email address.
@@ -127,9 +125,7 @@ def purge_functional_test_data(user_email_prefix):
uuid.UUID(usr.email_address.split("@")[0].split("+")[1]) uuid.UUID(usr.email_address.split("@")[0].split("+")[1])
except ValueError: except ValueError:
print( print(
"Skipping {} as the user email doesn't contain a UUID.".format( f"Skipping {usr.email_address} as the user email doesn't contain a UUID."
usr.email_address
)
) )
else: else:
services = dao_fetch_all_services_by_user(usr.id) services = dao_fetch_all_services_by_user(usr.id)
@@ -164,7 +160,7 @@ def purge_functional_test_data(user_email_prefix):
def insert_inbound_numbers_from_file(file_name): def insert_inbound_numbers_from_file(file_name):
# TODO maintainability what is the purpose of this command? Who would use it and why? # TODO maintainability what is the purpose of this command? Who would use it and why?
print("Inserting inbound numbers from {}".format(file_name)) print(f"Inserting inbound numbers from {file_name}")
with open(file_name) as file: with open(file_name) as file:
sql = "insert into inbound_numbers values('{}', '{}', 'sns', null, True, now(), null);" sql = "insert into inbound_numbers values('{}', '{}', 'sns', null, True, now(), null);"
@@ -199,9 +195,7 @@ def rebuild_ft_billing_for_day(service_id, day):
def rebuild_ft_data(process_day, service): def rebuild_ft_data(process_day, service):
deleted_rows = delete_billing_data_for_service_for_day(process_day, service) deleted_rows = delete_billing_data_for_service_for_day(process_day, service)
current_app.logger.info( current_app.logger.info(
"deleted {} existing billing rows for {} on {}".format( f"deleted {deleted_rows} existing billing rows for {service} on {process_day}"
deleted_rows, service, process_day
)
) )
transit_data = fetch_billing_data_for_day( transit_data = fetch_billing_data_for_day(
process_day=process_day, service_id=service process_day=process_day, service_id=service
@@ -211,9 +205,7 @@ def rebuild_ft_billing_for_day(service_id, day):
# upsert existing rows # upsert existing rows
update_fact_billing(data, process_day) update_fact_billing(data, process_day)
current_app.logger.info( current_app.logger.info(
"added/updated {} billing rows for {} on {}".format( f"added/updated {len(transit_data)} billing rows for {service} on {process_day}"
len(transit_data), service, process_day
)
) )
if service_id: if service_id:
@@ -276,7 +268,7 @@ def bulk_invite_user_to_service(file_name, service_id, user_id, auth_type, permi
} }
current_app.logger.info(f"DATA = {data}") current_app.logger.info(f"DATA = {data}")
with current_app.test_request_context( with current_app.test_request_context(
path="/service/{}/invite/".format(service_id), path=f"/service/{service_id}/invite/",
method="POST", method="POST",
data=json.dumps(data), data=json.dumps(data),
headers={"Content-Type": "application/json"}, headers={"Content-Type": "application/json"},
@@ -286,16 +278,12 @@ def bulk_invite_user_to_service(file_name, service_id, user_id, auth_type, permi
current_app.logger.info(f"RESPONSE {response[1]}") current_app.logger.info(f"RESPONSE {response[1]}")
if response[1] != 201: if response[1] != 201:
print( print(
"*** ERROR occurred for email address: {}".format( f"*** ERROR occurred for email address: {email_address.strip()}"
email_address.strip()
)
) )
print(response[0].get_data(as_text=True)) print(response[0].get_data(as_text=True))
except Exception as e: except Exception as e:
print( print(
"*** ERROR occurred for email address: {}. \n{}".format( f"*** ERROR occurred for email address: {email_address.strip()}. \n{e}"
email_address.strip(), e
)
) )
file.close() file.close()
@@ -318,7 +306,7 @@ def bulk_invite_user_to_service(file_name, service_id, user_id, auth_type, permi
) )
def update_jobs_archived_flag(start_date, end_date): def update_jobs_archived_flag(start_date, end_date):
current_app.logger.info( current_app.logger.info(
"Archiving jobs created between {} to {}".format(start_date, end_date) f"Archiving jobs created between {start_date} to {end_date}"
) )
process_date = start_date process_date = start_date
@@ -337,15 +325,14 @@ def update_jobs_archived_flag(start_date, end_date):
) )
db.session.commit() db.session.commit()
current_app.logger.info( current_app.logger.info(
"jobs: --- Completed took {}ms. Archived {} jobs for {}".format( f"jobs: --- Completed took {datetime.now() - start_time}ms. Archived "
datetime.now() - start_time, result.rowcount, process_date f"{result.rowcount} jobs for {process_date}"
)
) )
process_date += timedelta(days=1) process_date += timedelta(days=1)
total_updated += result.rowcount total_updated += result.rowcount
current_app.logger.info("Total archived jobs = {}".format(total_updated)) current_app.logger.info(f"Total archived jobs = {total_updated}")
@notify_command(name="populate-organizations-from-file") @notify_command(name="populate-organizations-from-file")
@@ -551,9 +538,7 @@ def fix_billable_units():
show_prefix=notification.service.prefix_sms, show_prefix=notification.service.prefix_sms,
) )
print( print(
"Updating notification: {} with {} billable_units".format( f"Updating notification: {notification.id} with {template.fragment_count} billable_units"
notification.id, template.fragment_count
)
) )
Notification.query.filter(Notification.id == notification.id).update( Notification.query.filter(Notification.id == notification.id).update(
@@ -586,9 +571,7 @@ def process_row_from_job(job_id, job_row_number):
if row.index == job_row_number: if row.index == job_row_number:
notification_id = process_row(row, template, job, job.service) notification_id = process_row(row, template, job, job.service)
current_app.logger.info( current_app.logger.info(
"Process row {} for job {} created notification_id: {}".format( f"Process row {job_row_number} for job {job_id} created notification_id: {notification_id}"
job_row_number, job_id, notification_id
)
) )
@@ -623,9 +606,7 @@ def populate_annual_billing_with_the_previous_years_allowance(year):
latest_annual_billing, {"service_id": row.id} latest_annual_billing, {"service_id": row.id}
) )
free_allowance = [x[0] for x in free_allowance_rows] free_allowance = [x[0] for x in free_allowance_rows]
print( print(f"create free limit of {free_allowance[0]} for service: {row.id}")
"create free limit of {} for service: {}".format(free_allowance[0], row.id)
)
dao_create_or_update_annual_billing_for_year( dao_create_or_update_annual_billing_for_year(
service_id=row.id, service_id=row.id,
free_sms_fragment_limit=free_allowance[0], free_sms_fragment_limit=free_allowance[0],
+16 -12
View File
@@ -1,7 +1,7 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from app import db from app import db
from app.models import INVITE_EXPIRED, InvitedUser from app.models import INVITE_EXPIRED, INVITE_PENDING, InvitedUser
def save_invited_user(invited_user): def save_invited_user(invited_user):
@@ -13,32 +13,36 @@ def get_invited_user_by_service_and_id(service_id, invited_user_id):
return InvitedUser.query.filter( return InvitedUser.query.filter(
InvitedUser.service_id == service_id, InvitedUser.service_id == service_id,
InvitedUser.id == invited_user_id, InvitedUser.id == invited_user_id,
InvitedUser.status != INVITE_EXPIRED, ).one()
def get_expired_invite_by_service_and_id(service_id, invited_user_id):
return InvitedUser.query.filter(
InvitedUser.service_id == service_id,
InvitedUser.id == invited_user_id,
InvitedUser.status == INVITE_EXPIRED,
).one() ).one()
def get_invited_user_by_id(invited_user_id): def get_invited_user_by_id(invited_user_id):
return InvitedUser.query.filter( return InvitedUser.query.filter(InvitedUser.id == invited_user_id).one()
InvitedUser.id == invited_user_id, InvitedUser.status != INVITE_EXPIRED
).one()
def get_expired_invited_users_for_service(service_id): def get_expired_invited_users_for_service(service_id):
return InvitedUser.query.filter( return InvitedUser.query.filter(InvitedUser.service_id == service_id).all()
InvitedUser.service_id == service_id, InvitedUser.status == INVITE_EXPIRED
).all()
def get_invited_users_for_service(service_id): def get_invited_users_for_service(service_id):
return InvitedUser.query.filter( return InvitedUser.query.filter(InvitedUser.service_id == service_id).all()
InvitedUser.service_id == service_id, InvitedUser.status != INVITE_EXPIRED
).all()
def expire_invitations_created_more_than_two_days_ago(): def expire_invitations_created_more_than_two_days_ago():
expired = ( expired = (
db.session.query(InvitedUser) db.session.query(InvitedUser)
.filter(InvitedUser.created_at <= datetime.utcnow() - timedelta(days=2)) .filter(
InvitedUser.created_at <= datetime.utcnow() - timedelta(days=2),
InvitedUser.status.in_((INVITE_PENDING,)),
)
.update({InvitedUser.status: INVITE_EXPIRED}) .update({InvitedUser.status: INVITE_EXPIRED})
) )
db.session.commit() db.session.commit()
+8 -13
View File
@@ -87,9 +87,7 @@ def persist_notification(
if not notification_id: if not notification_id:
notification_id = uuid.uuid4() notification_id = uuid.uuid4()
current_app.logger.info( current_app.logger.info(f"Persisting notification with id {notification_id}")
"Persisting notification with id {}".format(notification_id)
)
notification = Notification( notification = Notification(
id=notification_id, id=notification_id,
@@ -124,9 +122,7 @@ def persist_notification(
notification.phone_prefix = recipient_info.country_prefix notification.phone_prefix = recipient_info.country_prefix
notification.rate_multiplier = recipient_info.billable_units notification.rate_multiplier = recipient_info.billable_units
elif notification_type == EMAIL_TYPE: elif notification_type == EMAIL_TYPE:
current_app.logger.info( current_app.logger.info(f"Persisting notification with type: {EMAIL_TYPE}")
"Persisting notification with type: {}".format(EMAIL_TYPE)
)
notification.normalised_to = format_email_address(notification.to) notification.normalised_to = format_email_address(notification.to)
# if simulated create a Notification model to return but do not persist the Notification to the dB # if simulated create a Notification model to return but do not persist the Notification to the dB
@@ -141,9 +137,7 @@ def persist_notification(
) )
current_app.logger.info( current_app.logger.info(
"{} {} created at {}".format( f"{notification_type} {notification_id} created at {notification_created_at}"
notification_type, notification_id, notification_created_at
)
) )
return notification return notification
@@ -170,15 +164,16 @@ def send_notification_to_queue_detached(
raise raise
current_app.logger.debug( current_app.logger.debug(
"{} {} sent to the {} queue for delivery".format( f"{notification_type} {notification_id} sent to the {queue} queue for delivery"
notification_type, notification_id, queue
)
) )
def send_notification_to_queue(notification, queue=None): def send_notification_to_queue(notification, queue=None):
send_notification_to_queue_detached( send_notification_to_queue_detached(
notification.key_type, notification.notification_type, notification.id, queue notification.key_type,
notification.notification_type,
notification.id,
queue,
) )
+46 -11
View File
@@ -1,9 +1,12 @@
from datetime import datetime
from flask import Blueprint, current_app, jsonify, request from flask import Blueprint, current_app, jsonify, request
from itsdangerous import BadData, SignatureExpired from itsdangerous import BadData, SignatureExpired
from notifications_utils.url_safe_token import check_token, generate_token from notifications_utils.url_safe_token import check_token, generate_token
from app.config import QueueNames from app.config import QueueNames
from app.dao.invited_user_dao import ( from app.dao.invited_user_dao import (
get_expired_invite_by_service_and_id,
get_expired_invited_users_for_service, get_expired_invited_users_for_service,
get_invited_user_by_id, get_invited_user_by_id,
get_invited_user_by_service_and_id, get_invited_user_by_service_and_id,
@@ -12,7 +15,7 @@ from app.dao.invited_user_dao import (
) )
from app.dao.templates_dao import dao_get_template_by_id from app.dao.templates_dao import dao_get_template_by_id
from app.errors import InvalidRequest, register_errors from app.errors import InvalidRequest, register_errors
from app.models import EMAIL_TYPE, KEY_TYPE_NORMAL, Service from app.models import EMAIL_TYPE, INVITE_PENDING, KEY_TYPE_NORMAL, Service
from app.notifications.process_notifications import ( from app.notifications.process_notifications import (
persist_notification, persist_notification,
send_notification_to_queue, send_notification_to_queue,
@@ -24,15 +27,11 @@ service_invite = Blueprint("service_invite", __name__)
register_errors(service_invite) register_errors(service_invite)
@service_invite.route("/service/<service_id>/invite", methods=["POST"]) def _create_service_invite(invited_user, invite_link_host):
def create_invited_user(service_id):
request_json = request.get_json()
invited_user = invited_user_schema.load(request_json)
save_invited_user(invited_user)
template_id = current_app.config["INVITATION_EMAIL_TEMPLATE_ID"] template_id = current_app.config["INVITATION_EMAIL_TEMPLATE_ID"]
template = dao_get_template_by_id(template_id) template = dao_get_template_by_id(template_id)
service = Service.query.get(current_app.config["NOTIFY_SERVICE_ID"]) service = Service.query.get(current_app.config["NOTIFY_SERVICE_ID"])
saved_notification = persist_notification( saved_notification = persist_notification(
@@ -43,10 +42,7 @@ def create_invited_user(service_id):
personalisation={ personalisation={
"user_name": invited_user.from_user.name, "user_name": invited_user.from_user.name,
"service_name": invited_user.service.name, "service_name": invited_user.service.name,
"url": invited_user_url( "url": invited_user_url(invited_user.id, invite_link_host),
invited_user.id,
request_json.get("invite_link_host"),
),
}, },
notification_type=EMAIL_TYPE, notification_type=EMAIL_TYPE,
api_key_id=None, api_key_id=None,
@@ -56,6 +52,15 @@ def create_invited_user(service_id):
send_notification_to_queue(saved_notification, queue=QueueNames.NOTIFY) send_notification_to_queue(saved_notification, queue=QueueNames.NOTIFY)
@service_invite.route("/service/<service_id>/invite", methods=["POST"])
def create_invited_user(service_id):
request_json = request.get_json()
invited_user = invited_user_schema.load(request_json)
save_invited_user(invited_user)
_create_service_invite(invited_user, request_json.get("invite_link_host"))
return jsonify(data=invited_user_schema.dump(invited_user)), 201 return jsonify(data=invited_user_schema.dump(invited_user)), 201
@@ -92,6 +97,36 @@ def update_invited_user(service_id, invited_user_id):
return jsonify(data=invited_user_schema.dump(fetched)), 200 return jsonify(data=invited_user_schema.dump(fetched)), 200
@service_invite.route(
"/service/<service_id>/invite/<invited_user_id>/resend", methods=["POST"]
)
def resend_service_invite(service_id, invited_user_id):
"""Resend an expired invite.
This resets the invited user's created date and status to make it a new invite, and
sends the new invite out to the user.
Note:
This ignores the POST data entirely.
"""
fetched = get_expired_invite_by_service_and_id(
service_id=service_id,
invited_user_id=invited_user_id,
)
fetched.created_at = datetime.utcnow()
fetched.status = INVITE_PENDING
current_data = {k: v for k, v in invited_user_schema.dump(fetched).items()}
update_dict = invited_user_schema.load(current_data)
save_invited_user(update_dict)
_create_service_invite(fetched, current_app.config["ADMIN_BASE_URL"])
return jsonify(data=invited_user_schema.dump(fetched)), 200
def invited_user_url(invited_user_id, invite_link_host=None): def invited_user_url(invited_user_id, invite_link_host=None):
token = generate_token( token = generate_token(
str(invited_user_id), str(invited_user_id),
+3 -3
View File
@@ -1,10 +1,10 @@
import os import os
import socket
import sys import sys
import traceback import traceback
import gunicorn
import eventlet
import socket
import eventlet
import gunicorn
workers = 4 workers = 4
worker_class = "eventlet" worker_class = "eventlet"
+3 -1
View File
@@ -1,7 +1,9 @@
from __future__ import with_statement from __future__ import with_statement
from logging.config import fileConfig
from alembic import context from alembic import context
from sqlalchemy import engine_from_config, pool from sqlalchemy import engine_from_config, pool
from logging.config import fileConfig
# this is the Alembic Config object, which provides # this is the Alembic Config object, which provides
# access to the values within the .ini file in use. # access to the values within the .ini file in use.
@@ -10,8 +10,8 @@ Create Date: 2016-04-07 17:22:12.147542
revision = "0001_restart_migrations" revision = "0001_restart_migrations"
down_revision = None down_revision = None
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,9 +10,9 @@ Create Date: 2016-04-15 12:12:46.383782
revision = "0002_add_content_char_count" revision = "0002_add_content_char_count"
down_revision = "0001_restart_migrations" down_revision = "0001_restart_migrations"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy.sql import table, column from alembic import op
from sqlalchemy.sql import column, table
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-04-19 13:01:54.519821
revision = "0003_add_service_history" revision = "0003_add_service_history"
down_revision = "0002_add_content_char_count" down_revision = "0002_add_content_char_count"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-04-20 13:59:01.132535
revision = "0004_notification_stats_date" revision = "0004_notification_stats_date"
down_revision = "0003_add_service_history" down_revision = "0003_add_service_history"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-04-20 15:13:42.229197
revision = "0005_add_provider_stats" revision = "0005_add_provider_stats"
down_revision = "0004_notification_stats_date" down_revision = "0004_notification_stats_date"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-04-20 17:21:38.541766
revision = "0006_api_keys_history" revision = "0006_api_keys_history"
down_revision = "0005_add_provider_stats" down_revision = "0005_add_provider_stats"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-04-22 09:51:55.615891
revision = "0007_template_history" revision = "0007_template_history"
down_revision = "0006_api_keys_history" down_revision = "0006_api_keys_history"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-04-25 14:16:49.787229
revision = "0008_archive_template" revision = "0008_archive_template"
down_revision = "0007_template_history" down_revision = "0007_template_history"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-04-26 14:54:56.852642
revision = "0009_created_by_for_jobs" revision = "0009_created_by_for_jobs"
down_revision = "0008_archive_template" down_revision = "0008_archive_template"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-04-26 13:08:42.892813
revision = "0010_events_table" revision = "0010_events_table"
down_revision = "0009_created_by_for_jobs" down_revision = "0009_created_by_for_jobs"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -14,8 +14,8 @@ down_revision = "0010_events_table"
import uuid import uuid
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-05-05 09:18:26.926275
revision = "0012_complete_provider_details" revision = "0012_complete_provider_details"
down_revision = "0011_ad_provider_details" down_revision = "0011_ad_provider_details"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
from sqlalchemy.dialects.postgresql import ENUM from sqlalchemy.dialects.postgresql import ENUM
@@ -10,8 +10,8 @@ Create Date: 2016-05-11 16:00:51.478012
revision = "0014_add_template_version" revision = "0014_add_template_version"
down_revision = "0012_complete_provider_details" down_revision = "0012_complete_provider_details"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-05-16 13:55:27.179748
revision = "0015_fix_template_data" revision = "0015_fix_template_data"
down_revision = "0014_add_template_version" down_revision = "0014_add_template_version"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-05-17 09:59:49.032865
revision = "0016_reply_to_email" revision = "0016_reply_to_email"
down_revision = "0015_fix_template_data" down_revision = "0015_fix_template_data"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,12 +10,8 @@ Create Date: 2016-05-17 11:23:36.881219
revision = "0017_add_failure_types" revision = "0017_add_failure_types"
down_revision = "0016_reply_to_email" down_revision = "0016_reply_to_email"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-05-18 09:39:22.512042
revision = "0018_remove_subject_uniqueness" revision = "0018_remove_subject_uniqueness"
down_revision = "0017_add_failure_types" down_revision = "0017_add_failure_types"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-05-18 15:04:24.513071
revision = "0019_add_job_row_number" revision = "0019_add_job_row_number"
down_revision = "0018_remove_subject_uniqueness" down_revision = "0018_remove_subject_uniqueness"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-05-20 15:15:03.850862
revision = "0020_template_history_fix" revision = "0020_template_history_fix"
down_revision = "0019_add_job_row_number" down_revision = "0019_add_job_row_number"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -12,8 +12,8 @@ from sqlalchemy import text
revision = "0021_add_delivered_failed_counts" revision = "0021_add_delivered_failed_counts"
down_revision = "0020_template_history_fix" down_revision = "0020_template_history_fix"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-05-25 15:47:32.568097
revision = "0022_add_pending_status" revision = "0022_add_pending_status"
down_revision = "0021_add_delivered_failed_counts" down_revision = "0021_add_delivered_failed_counts"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-05-31 11:11:45.979594
revision = "0023_add_research_mode" revision = "0023_add_research_mode"
down_revision = "0022_add_pending_status" down_revision = "0022_add_pending_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-05-31 11:11:45.979594
revision = "0024_add_research_mode_defaults" revision = "0024_add_research_mode_defaults"
down_revision = "0023_add_research_mode" down_revision = "0023_add_research_mode"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -6,6 +6,8 @@ Create Date: 2016-06-01 14:17:01.963181
""" """
import uuid
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
from datetime import datetime from datetime import datetime
@@ -13,7 +15,6 @@ from alembic import op
from sqlalchemy import text from sqlalchemy import text
from app.hashing import hashpw from app.hashing import hashpw
import uuid
revision = "0025_notify_service_data" revision = "0025_notify_service_data"
down_revision = "0024_add_research_mode_defaults" down_revision = "0024_add_research_mode_defaults"
@@ -10,8 +10,8 @@ Create Date: 2016-06-07 09:51:07.343334
revision = "0026_rename_notify_service" revision = "0026_rename_notify_service"
down_revision = "0025_notify_service_data" down_revision = "0025_notify_service_data"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -14,8 +14,8 @@ from sqlalchemy import text
revision = "0028_fix_reg_template_history" revision = "0028_fix_reg_template_history"
down_revision = "0026_rename_notify_service" down_revision = "0026_rename_notify_service"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
service_id = "d6aa2c68-a2d9-4437-ab19-3ae8eb202553" service_id = "d6aa2c68-a2d9-4437-ab19-3ae8eb202553"
user_id = "6af522d0-2915-4e52-83a3-3690455a5fe6" user_id = "6af522d0-2915-4e52-83a3-3690455a5fe6"
+1 -1
View File
@@ -12,8 +12,8 @@ from sqlalchemy import text
revision = "0029_fix_email_from" revision = "0029_fix_email_from"
down_revision = "0028_fix_reg_template_history" down_revision = "0028_fix_reg_template_history"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
service_id = "d6aa2c68-a2d9-4437-ab19-3ae8eb202553" service_id = "d6aa2c68-a2d9-4437-ab19-3ae8eb202553"
@@ -13,8 +13,8 @@ from sqlalchemy.dialects import postgresql
revision = "0030_service_id_not_null" revision = "0030_service_id_not_null"
down_revision = "0029_fix_email_from" down_revision = "0029_fix_email_from"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-06-20 10:39:50.892847
revision = "0031_store_personalisation" revision = "0031_store_personalisation"
down_revision = "0030_service_id_not_null" down_revision = "0030_service_id_not_null"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-06-21 11:29:28.963615
revision = "0032_notification_created_status" revision = "0032_notification_created_status"
down_revision = "0031_store_personalisation" down_revision = "0031_store_personalisation"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-06-24 12:02:10.915817
revision = "0033_api_key_type" revision = "0033_api_key_type"
down_revision = "0032_notification_created_status" down_revision = "0032_notification_created_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-06-28 10:37:25.389020
revision = "0034_pwd_changed_at_not_null" revision = "0034_pwd_changed_at_not_null"
down_revision = "0033_api_key_type" down_revision = "0033_api_key_type"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-06-29 10:48:55.955317
revision = "0035_notification_type" revision = "0035_notification_type"
down_revision = "0034_pwd_changed_at_not_null" down_revision = "0034_pwd_changed_at_not_null"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-07-01 16:01:16.892638
revision = "0036_notif_key_type_not_null" revision = "0036_notif_key_type_not_null"
down_revision = "0035_notification_type" down_revision = "0035_notification_type"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-06-30 14:55:33.811696
revision = "0037_service_sms_sender" revision = "0037_service_sms_sender"
down_revision = "0036_notif_key_type_not_null" down_revision = "0036_notif_key_type_not_null"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -12,8 +12,8 @@ from sqlalchemy import text
revision = "0039_fix_notifications" revision = "0039_fix_notifications"
down_revision = "0038_test_api_key_type" down_revision = "0038_test_api_key_type"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2016-07-07 13:15:35.503107
revision = "0042_notification_history" revision = "0042_notification_history"
down_revision = "0039_fix_notifications" down_revision = "0039_fix_notifications"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-08-01 10:37:41.198070
revision = "0043_notification_indexes" revision = "0043_notification_indexes"
down_revision = "0042_notification_history" down_revision = "0042_notification_history"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,13 +10,13 @@ Create Date: 2016-07-15 13:28:41.441009
revision = "0044_jobs_to_notification_hist" revision = "0044_jobs_to_notification_hist"
down_revision = "0043_notification_indexes" down_revision = "0043_notification_indexes"
from alembic import op import datetime
import uuid
from alembic import op
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
import uuid from app.models import Job, NotificationHistory, Template
import datetime
from app.models import Job, Template, NotificationHistory
def upgrade(): def upgrade():
+2 -2
View File
@@ -7,13 +7,13 @@ Create Date: 2016-08-02 16:36:42.455838
""" """
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
from sqlalchemy import text, bindparam from sqlalchemy import bindparam, text
revision = "0045_billable_units" revision = "0045_billable_units"
down_revision = "0044_jobs_to_notification_hist" down_revision = "0044_jobs_to_notification_hist"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
from app.models import Service from app.models import Service
@@ -10,8 +10,8 @@ Create Date: 2016-08-04 12:00:43.682610
revision = "0046_organisations_and_branding" revision = "0046_organisations_and_branding"
down_revision = "0045_billable_units" down_revision = "0045_billable_units"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-08-24 13:21:51.744526
revision = "0048_job_scheduled_time" revision = "0048_job_scheduled_time"
down_revision = "0046_organisations_and_branding" down_revision = "0046_organisations_and_branding"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-08-24 13:21:51.744526
revision = "0050_index_for_stats" revision = "0050_index_for_stats"
down_revision = "0048_job_scheduled_time" down_revision = "0048_job_scheduled_time"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-08-25 15:56:31.779399
revision = "0052_drop_jobs_status" revision = "0052_drop_jobs_status"
down_revision = "0051_set_job_status" down_revision = "0051_set_job_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-09-01 14:34:06.839381
revision = "0053_cancelled_job_status" revision = "0053_cancelled_job_status"
down_revision = "0052_drop_jobs_status" down_revision = "0052_drop_jobs_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-08-25 15:56:31.779399
revision = "0054_perform_drop_status_column" revision = "0054_perform_drop_status_column"
down_revision = "0053_cancelled_job_status" down_revision = "0053_cancelled_job_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2016-09-20 12:12:30.838095
revision = "0055_service_whitelist" revision = "0055_service_whitelist"
down_revision = "0054_perform_drop_status_column" down_revision = "0054_perform_drop_status_column"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-10-04 09:43:42.321138
revision = "0056_minor_updates" revision = "0056_minor_updates"
down_revision = "0055_service_whitelist" down_revision = "0055_service_whitelist"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2016-10-25 17:37:27.660723
revision = "0058_add_letters_flag" revision = "0058_add_letters_flag"
down_revision = "0056_minor_updates" down_revision = "0056_minor_updates"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -6,8 +6,8 @@ Create Date: 2016-11-07 16:13:18.961527
""" """
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = "0060_add_letter_template_type" revision = "0060_add_letter_template_type"
@@ -10,8 +10,8 @@ Create Date: 2016-11-17 13:19:25.820617
revision = "0061_add_client_reference" revision = "0061_add_client_reference"
down_revision = "0060_add_letter_template_type" down_revision = "0060_add_letter_template_type"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -13,8 +13,8 @@ Create Date: 2016-12-14 13:00:24.226990
revision = "0062_provider_details_history" revision = "0062_provider_details_history"
down_revision = "0061_add_client_reference" down_revision = "0061_add_client_reference"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-01-10 15:39:30.909308
revision = "0063_templates_process_type" revision = "0063_templates_process_type"
down_revision = "0062_provider_details_history" down_revision = "0062_provider_details_history"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-01-16 11:08:00.520678
revision = "0064_update_template_process" revision = "0064_update_template_process"
down_revision = "0063_templates_process_type" down_revision = "0063_templates_process_type"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-02-17 11:48:40.669235
revision = "0065_users_current_session_id" revision = "0065_users_current_session_id"
down_revision = "0064_update_template_process" down_revision = "0064_update_template_process"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-02-28 11:23:40.299110
revision = "0067_service_contact_block" revision = "0067_service_contact_block"
down_revision = "0065_users_current_session_id" down_revision = "0065_users_current_session_id"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-03-06 17:19:28.492005
revision = "0068_add_created_by_to_provider" revision = "0068_add_created_by_to_provider"
down_revision = "0067_service_contact_block" down_revision = "0067_service_contact_block"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-03-10 16:15:22.153948
revision = "0069_add_dvla_job_status" revision = "0069_add_dvla_job_status"
down_revision = "0068_add_created_by_to_provider" down_revision = "0068_add_created_by_to_provider"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-03-10 16:15:22.153948
revision = "0070_fix_notify_user_email" revision = "0070_fix_notify_user_email"
down_revision = "0069_add_dvla_job_status" down_revision = "0069_add_dvla_job_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-03-10 16:15:22.153948
revision = "0071_add_job_error_state" revision = "0071_add_job_error_state"
down_revision = "0070_fix_notify_user_email" down_revision = "0070_fix_notify_user_email"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2017-04-19 15:25:45.155886
revision = "0072_add_dvla_orgs" revision = "0072_add_dvla_orgs"
down_revision = "0071_add_job_error_state" down_revision = "0071_add_job_error_state"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-10-25 17:37:27.660723
revision = "0073_add_international_sms_flag" revision = "0073_add_international_sms_flag"
down_revision = "0072_add_dvla_orgs" down_revision = "0072_add_dvla_orgs"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -14,8 +14,8 @@ from sqlalchemy import text
revision = "0075_create_rates_table" revision = "0075_create_rates_table"
down_revision = "0073_add_international_sms_flag" down_revision = "0073_add_international_sms_flag"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-04-25 09:44:13.194164
revision = "0076_add_intl_flag_to_provider" revision = "0076_add_intl_flag_to_provider"
down_revision = "0075_create_rates_table" down_revision = "0075_create_rates_table"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-04-25 11:34:43.229494
revision = "0077_add_intl_notification" revision = "0077_add_intl_notification"
down_revision = "0076_add_intl_flag_to_provider" down_revision = "0076_add_intl_flag_to_provider"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-04-24 16:55:20.731069
revision = "0078_sent_notification_status" revision = "0078_sent_notification_status"
down_revision = "0077_add_intl_notification" down_revision = "0077_add_intl_notification"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
enum_name = "notify_status_type" enum_name = "notify_status_type"
tmp_name = "tmp_" + enum_name tmp_name = "tmp_" + enum_name
@@ -10,8 +10,8 @@ Create Date: 2017-05-02 14:50:04.070874
revision = "0081_noti_status_as_enum" revision = "0081_noti_status_as_enum"
down_revision = "0078_sent_notification_status" down_revision = "0078_sent_notification_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -9,10 +9,9 @@ Create Date: 2017-05-10 16:06:04.070874
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
from datetime import datetime from datetime import datetime
from flask import current_app
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from flask import current_app
from sqlalchemy import text from sqlalchemy import text
revision = "0082_add_go_live_template" revision = "0082_add_go_live_template"
@@ -10,8 +10,8 @@ Create Date: 2017-05-12 11:29:32.664811
revision = "0083_add_perm_types_and_svc_perm" revision = "0083_add_perm_types_and_svc_perm"
down_revision = "0082_add_go_live_template" down_revision = "0082_add_go_live_template"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2017-05-12 13:16:14.147368
revision = "0084_add_job_stats" revision = "0084_add_job_stats"
down_revision = "0083_add_perm_types_and_svc_perm" down_revision = "0083_add_perm_types_and_svc_perm"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-05-22 10:23:43.939050
revision = "0085_update_incoming_to_inbound" revision = "0085_update_incoming_to_inbound"
down_revision = "0084_add_job_stats" down_revision = "0084_add_job_stats"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -6,8 +6,8 @@ Create Date: 2017-05-23 10:37:00.404087
""" """
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
revision = "0086_add_norm_to_notification" revision = "0086_add_norm_to_notification"
down_revision = "0085_update_incoming_to_inbound" down_revision = "0085_update_incoming_to_inbound"
@@ -5,8 +5,8 @@ Revises: 0086_add_norm_to_notification
Create Date: 2017-05-15 12:50:20.041950 Create Date: 2017-05-15 12:50:20.041950
""" """
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
revision = "0087_scheduled_notifications" revision = "0087_scheduled_notifications"
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2017-05-22 11:28:53.471004
revision = "0090_inbound_sms" revision = "0090_inbound_sms"
down_revision = "0089_govuk_sms_sender" down_revision = "0089_govuk_sms_sender"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-06-02 16:07:35.445423
revision = "0092_add_inbound_provider" revision = "0092_add_inbound_provider"
down_revision = "0090_inbound_sms" down_revision = "0090_inbound_sms"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
+1 -1
View File
@@ -5,8 +5,8 @@ Revises: 0092_add_inbound_provider
Create Date: 2017-06-06 14:37:30.051647 Create Date: 2017-06-06 14:37:30.051647
""" """
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = "0094_job_stats_update" revision = "0094_job_stats_update"
@@ -12,8 +12,8 @@ from sqlalchemy import text
revision = "0095_migrate_existing_svc_perms" revision = "0095_migrate_existing_svc_perms"
down_revision = "0094_job_stats_update" down_revision = "0094_job_stats_update"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
migration_date = "2017-05-26 17:30:00.000000" migration_date = "2017-05-26 17:30:00.000000"
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2017-06-08 15:46:49.637642
revision = "0096_update_job_stats" revision = "0096_update_job_stats"
down_revision = "0095_migrate_existing_svc_perms" down_revision = "0095_migrate_existing_svc_perms"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-06-02 16:50:11.698423
revision = "0097_notnull_inbound_provider" revision = "0097_notnull_inbound_provider"
down_revision = "0096_update_job_stats" down_revision = "0096_update_job_stats"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
def upgrade(): def upgrade():
@@ -5,8 +5,8 @@ Revises: 0097_notnull_inbound_provider
Create Date: 2017-06-13 15:02:33.609656 Create Date: 2017-06-13 15:02:33.609656
""" """
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
revision = "0098_service_inbound_api" revision = "0098_service_inbound_api"
+1 -1
View File
@@ -12,8 +12,8 @@ from sqlalchemy import text
revision = "0099_tfl_dar" revision = "0099_tfl_dar"
down_revision = "0098_service_inbound_api" down_revision = "0098_service_inbound_api"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
TFL_DAR_ID = "1d70f564-919b-4c68-8bdf-b8520d92516e" TFL_DAR_ID = "1d70f564-919b-4c68-8bdf-b8520d92516e"
@@ -10,8 +10,8 @@ Create Date: 2017-06-13 10:53:25.032202
revision = "0100_notification_created_by" revision = "0100_notification_created_by"
down_revision = "0099_tfl_dar" down_revision = "0099_tfl_dar"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-06-27 15:37:28.878359
revision = "db6d9d9f06bc" revision = "db6d9d9f06bc"
down_revision = "0101_een_logo" down_revision = "0101_een_logo"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -12,10 +12,10 @@ from sqlalchemy import text
revision = "0103_add_historical_redact" revision = "0103_add_historical_redact"
down_revision = "db6d9d9f06bc" down_revision = "db6d9d9f06bc"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy.dialects import postgresql from alembic import op
from flask import current_app from flask import current_app
from sqlalchemy.dialects import postgresql
def upgrade(): def upgrade():
+2 -2
View File
@@ -10,10 +10,10 @@ Create Date: 2017-06-29 12:44:16.815039
revision = "0105_opg_letter_org" revision = "0105_opg_letter_org"
down_revision = "0103_add_historical_redact" down_revision = "0103_add_historical_redact"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy.dialects import postgresql from alembic import op
from flask import current_app from flask import current_app
from sqlalchemy.dialects import postgresql
def upgrade(): def upgrade():
@@ -10,8 +10,8 @@ Create Date: 2017-07-10 14:25:58.494636
revision = "0107_drop_template_stats" revision = "0107_drop_template_stats"
down_revision = "0106_null_noti_status" down_revision = "0106_null_noti_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-07-06 10:14:35.188404
revision = "0108_change_logo_not_nullable" revision = "0108_change_logo_not_nullable"
down_revision = "0107_drop_template_stats" down_revision = "0107_drop_template_stats"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -5,8 +5,8 @@ Revises: 0108_change_logo_not_nullable
Create Date: 2017-07-10 14:25:15.712055 Create Date: 2017-07-10 14:25:15.712055
""" """
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
revision = "0109_rem_old_noti_status" revision = "0109_rem_old_noti_status"
+1 -1
View File
@@ -10,8 +10,8 @@ Create Date: 2017-07-13 14:35:03.183659
revision = "0110_monthly_billing" revision = "0110_monthly_billing"
down_revision = "0109_rem_old_noti_status" down_revision = "0109_rem_old_noti_status"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -10,8 +10,8 @@ Create Date: 2017-07-12 13:35:45.636618
revision = "0111_drop_old_service_flags" revision = "0111_drop_old_service_flags"
down_revision = "0110_monthly_billing" down_revision = "0110_monthly_billing"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -6,8 +6,9 @@ Create Date: 2017-07-12 13:35:45.636618
""" """
from datetime import datetime from datetime import datetime
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy import text from sqlalchemy import text
from app.dao.date_util import get_month_start_and_end_date_in_utc from app.dao.date_util import get_month_start_and_end_date_in_utc
@@ -10,8 +10,8 @@ Create Date: 2017-07-27 11:12:34.938086
revision = "0113_job_created_by_nullable" revision = "0113_job_created_by_nullable"
down_revision = "0112_add_start_end_dates" down_revision = "0112_add_start_end_dates"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
@@ -5,8 +5,8 @@ Revises: 0113_job_created_by_nullable
Create Date: 2017-07-27 13:36:37.304344 Create Date: 2017-07-27 13:36:37.304344
""" """
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
revision = "0014_drop_monthly_billing_cols" revision = "0014_drop_monthly_billing_cols"
@@ -10,8 +10,8 @@ Create Date: 2017-08-10 17:30:01.507694
revision = "0115_add_inbound_numbers" revision = "0115_add_inbound_numbers"
down_revision = "0014_drop_monthly_billing_cols" down_revision = "0014_drop_monthly_billing_cols"
from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql

Some files were not shown because too many files have changed in this diff Show More