diff --git a/app/commands.py b/app/commands.py index 197403eba..5b405ca54 100644 --- a/app/commands.py +++ b/app/commands.py @@ -2,7 +2,10 @@ import uuid from datetime import datetime from decimal import Decimal from flask.ext.script import Command, Manager, Option -from app.models import (PROVIDERS, Service, User) + + +from app import db +from app.models import (PROVIDERS, Service, User, NotificationHistory) from app.dao.services_dao import ( delete_service_and_all_associated_db_objects, dao_fetch_all_services_by_user @@ -60,3 +63,19 @@ class PurgeFunctionalTestDataCommand(Command): else: delete_user_verify_codes(usr) delete_model_user(usr) + + +class CustomDbScript(Command): + def run(self): + self.update_notification_international_flag() + + def update_notification_international_flag(self): + # 250,000 rows takes 30 seconds to update. + subq = "select id from notification_history where international is null limit 250000" + update = "update notification_history set international = False where id in ({})".format(subq) + result = db.session.execute(subq).fetchall() + while len(result) > 0: + db.session.execute(update) + print('commit 10000 updates at {}'.format(datetime.utcnow())) + db.session.commit() + result = db.session.execute(subq).fetchall() diff --git a/application.py b/application.py index 0b940dc87..b2a59a6fd 100644 --- a/application.py +++ b/application.py @@ -15,6 +15,7 @@ migrate = Migrate(application, db) manager.add_command('db', MigrateCommand) manager.add_command('create_provider_rate', commands.CreateProviderRateCommand) manager.add_command('purge_functional_test_data', commands.PurgeFunctionalTestDataCommand) +manager.add_command('custom_db_script', commands.CustomDbScript) @manager.command diff --git a/server_commands.py b/server_commands.py index 6289da765..85bf13137 100644 --- a/server_commands.py +++ b/server_commands.py @@ -25,6 +25,7 @@ manager = Manager(application) migrate = Migrate(application, db) manager.add_command('db', MigrateCommand) manager.add_command('purge_functional_test_data', commands.PurgeFunctionalTestDataCommand) +manager.add_command('custom_db_script', commands.CustomDbScript) if __name__ == '__main__': manager.run()