mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-02 09:26:08 -05:00
Merge pull request #2103 from alphagov/populate-notification-postage
populate historic notification postage data
This commit is contained in:
@@ -602,3 +602,49 @@ def bulk_invite_user_to_service(file_name, service_id, user_id, auth_type, permi
|
|||||||
print("*** ERROR occurred for email address: {}. \n{}".format(email_address.strip(), e))
|
print("*** ERROR occurred for email address: {}. \n{}".format(email_address.strip(), e))
|
||||||
|
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
|
|
||||||
|
@notify_command(name='populate-notification-postage')
|
||||||
|
@click.option(
|
||||||
|
'-s',
|
||||||
|
'--start_date',
|
||||||
|
default=datetime(2017, 2, 1),
|
||||||
|
help="start date inclusive",
|
||||||
|
type=click_dt(format='%Y-%m-%d')
|
||||||
|
)
|
||||||
|
@statsd(namespace="tasks")
|
||||||
|
def populate_notification_postage(start_date):
|
||||||
|
current_app.logger.info('populating historical notification postage')
|
||||||
|
|
||||||
|
total_updated = 0
|
||||||
|
|
||||||
|
while start_date < datetime.utcnow():
|
||||||
|
# process in ten day chunks
|
||||||
|
end_date = start_date + timedelta(days=10)
|
||||||
|
|
||||||
|
sql = \
|
||||||
|
"""
|
||||||
|
UPDATE {}
|
||||||
|
SET postage = 'second'
|
||||||
|
WHERE notification_type = 'letter' AND
|
||||||
|
postage IS NULL AND
|
||||||
|
created_at BETWEEN :start AND :end
|
||||||
|
"""
|
||||||
|
|
||||||
|
execution_start = datetime.utcnow()
|
||||||
|
|
||||||
|
if end_date > datetime.utcnow() - timedelta(days=8):
|
||||||
|
print('Updating notifications table as well')
|
||||||
|
db.session.execute(sql.format('notifications'), {'start': start_date, 'end': end_date})
|
||||||
|
|
||||||
|
result = db.session.execute(sql.format('notification_history'), {'start': start_date, 'end': end_date})
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
current_app.logger.info('notification postage took {}ms. Migrated {} rows for {} to {}'.format(
|
||||||
|
datetime.utcnow() - execution_start, result.rowcount, start_date, end_date))
|
||||||
|
|
||||||
|
start_date += timedelta(days=10)
|
||||||
|
|
||||||
|
total_updated += result.rowcount
|
||||||
|
|
||||||
|
current_app.logger.info('Total inserted/updated records = {}'.format(total_updated))
|
||||||
|
|||||||
Reference in New Issue
Block a user