mirror of
https://github.com/GSA/notifications-api.git
synced 2026-07-19 14:04:20 -04:00
Starting to implement scheduling
This commit is contained in:
@@ -361,7 +361,8 @@ class Job(db.Model):
|
||||
index=True,
|
||||
unique=False,
|
||||
nullable=True)
|
||||
job_status = db.Column(db.String(255), db.ForeignKey('job_status.name'), index=True, nullable=True)
|
||||
job_status = db.Column(
|
||||
db.String(255), db.ForeignKey('job_status.name'), index=True, nullable=True, default="pending")
|
||||
|
||||
|
||||
VERIFY_CODE_TYPES = [EMAIL_TYPE, SMS_TYPE]
|
||||
|
||||
@@ -20,59 +20,68 @@ from app.models import Job, Template, NotificationHistory
|
||||
|
||||
|
||||
def upgrade():
|
||||
session = Session(bind=op.get_bind())
|
||||
|
||||
go_live = datetime.datetime.strptime('2016-05-18', '%Y-%m-%d')
|
||||
notifications_history_start_date = datetime.datetime.strptime('2016-06-26 23:21:55', '%Y-%m-%d %H:%M:%S')
|
||||
jobs = session.query(Job).join(Template).filter(Job.service_id == '95316ff0-e555-462d-a6e7-95d26fbfd091',
|
||||
Job.created_at >= go_live,
|
||||
Job.created_at < notifications_history_start_date).all()
|
||||
|
||||
for job in jobs:
|
||||
for i in range(0, job.notifications_delivered):
|
||||
notification = NotificationHistory(id=uuid.uuid4(),
|
||||
job_id=job.id,
|
||||
service_id=job.service_id,
|
||||
template_id=job.template.id,
|
||||
template_version=job.template_version,
|
||||
key_type='normal',
|
||||
content_char_count=len(job.template.content),
|
||||
notification_type=job.template.template_type,
|
||||
created_at=job.created_at,
|
||||
sent_at=job.processing_finished,
|
||||
sent_by='ses' if job.template.template_type == 'email' else 'mmg',
|
||||
status='delivered')
|
||||
|
||||
session.add(notification)
|
||||
|
||||
for i in range(0, job.notifications_failed):
|
||||
notification = NotificationHistory(id=uuid.uuid4(),
|
||||
job_id=job.id,
|
||||
service_id=job.service_id,
|
||||
template_id=job.template.id,
|
||||
template_version=job.template_version,
|
||||
key_type='normal',
|
||||
content_char_count=len(job.template.content),
|
||||
notification_type=job.template.template_type,
|
||||
created_at=job.created_at,
|
||||
sent_at=job.processing_finished,
|
||||
sent_by='ses' if job.template.template_type == 'email' else 'mmg',
|
||||
status='permanent-failure')
|
||||
session.add(notification)
|
||||
session.commit()
|
||||
#
|
||||
# REMOVED
|
||||
# This script has been applied and doesn't need to be re-applied
|
||||
# note that by referencing the model objects in migration files, any subsequent alteration of the model and thus
|
||||
# the database causes all previous migration scripts to fail as the model and DB will be inconsistent in this
|
||||
# past state.
|
||||
#
|
||||
# session = Session(bind=op.get_bind())
|
||||
#
|
||||
# go_live = datetime.datetime.strptime('2016-05-18', '%Y-%m-%d')
|
||||
# notifications_history_start_date = datetime.datetime.strptime('2016-06-26 23:21:55', '%Y-%m-%d %H:%M:%S')
|
||||
# jobs = session.query(Job).join(Template).filter(Job.service_id == '95316ff0-e555-462d-a6e7-95d26fbfd091',
|
||||
# Job.created_at >= go_live,
|
||||
# Job.created_at < notifications_history_start_date).all()
|
||||
#
|
||||
# for job in jobs:
|
||||
# for i in range(0, job.notifications_delivered):
|
||||
# notification = NotificationHistory(id=uuid.uuid4(),
|
||||
# job_id=job.id,
|
||||
# service_id=job.service_id,
|
||||
# template_id=job.template.id,
|
||||
# template_version=job.template_version,
|
||||
# key_type='normal',
|
||||
# content_char_count=len(job.template.content),
|
||||
# notification_type=job.template.template_type,
|
||||
# created_at=job.created_at,
|
||||
# sent_at=job.processing_finished,
|
||||
# sent_by='ses' if job.template.template_type == 'email' else 'mmg',
|
||||
# status='delivered')
|
||||
#
|
||||
# session.add(notification)
|
||||
#
|
||||
# for i in range(0, job.notifications_failed):
|
||||
# notification = NotificationHistory(id=uuid.uuid4(),
|
||||
# job_id=job.id,
|
||||
# service_id=job.service_id,
|
||||
# template_id=job.template.id,
|
||||
# template_version=job.template_version,
|
||||
# key_type='normal',
|
||||
# content_char_count=len(job.template.content),
|
||||
# notification_type=job.template.template_type,
|
||||
# created_at=job.created_at,
|
||||
# sent_at=job.processing_finished,
|
||||
# sent_by='ses' if job.template.template_type == 'email' else 'mmg',
|
||||
# status='permanent-failure')
|
||||
# session.add(notification)
|
||||
# session.commit()
|
||||
pass
|
||||
|
||||
|
||||
def downgrade():
|
||||
### commands auto generated by Alembic - please adjust! ###
|
||||
session = Session(bind=op.get_bind())
|
||||
|
||||
go_live = datetime.datetime.strptime('2016-05-18', '%Y-%m-%d')
|
||||
notifications_history_start_date = datetime.datetime.strptime('2016-06-26 23:21:55', '%Y-%m-%d %H:%M:%S')
|
||||
|
||||
session.query(NotificationHistory).filter(
|
||||
NotificationHistory.created_at >= go_live,
|
||||
NotificationHistory.service_id == '95316ff0-e555-462d-a6e7-95d26fbfd091',
|
||||
NotificationHistory.created_at < notifications_history_start_date).delete()
|
||||
|
||||
session.commit()
|
||||
### end Alembic commands ###
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
# session = Session(bind=op.get_bind())
|
||||
#
|
||||
# go_live = datetime.datetime.strptime('2016-05-18', '%Y-%m-%d')
|
||||
# notifications_history_start_date = datetime.datetime.strptime('2016-06-26 23:21:55', '%Y-%m-%d %H:%M:%S')
|
||||
#
|
||||
# session.query(NotificationHistory).filter(
|
||||
# NotificationHistory.created_at >= go_live,
|
||||
# NotificationHistory.service_id == '95316ff0-e555-462d-a6e7-95d26fbfd091',
|
||||
# NotificationHistory.created_at < notifications_history_start_date).delete()
|
||||
#
|
||||
# session.commit()
|
||||
# ### end Alembic commands ###
|
||||
pass
|
||||
|
||||
@@ -123,10 +123,12 @@ def test_create_job(notify_api, sample_template, mocker, fake_uuid):
|
||||
path = '/service/{}/job'.format(sample_template.service.id)
|
||||
auth_header = create_authorization_header(service_id=sample_template.service.id)
|
||||
headers = [('Content-Type', 'application/json'), auth_header]
|
||||
|
||||
response = client.post(
|
||||
path,
|
||||
data=json.dumps(data),
|
||||
headers=headers)
|
||||
print(json.loads(response.get_data(as_text=True)))
|
||||
assert response.status_code == 201
|
||||
|
||||
app.celery.tasks.process_job.apply_async.assert_called_once_with(
|
||||
|
||||
Reference in New Issue
Block a user