Skip to content

Commit

Permalink
Add task to send Slack alerts when found modified legal case (ADR/AF/…
Browse files Browse the repository at this point in the history
…MUR)
  • Loading branch information
fec-jli committed Sep 27, 2021
1 parent 7c60a48 commit 1af499b
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 13 deletions.
16 changes: 10 additions & 6 deletions webservices/tasks/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,6 @@
schedule = {}
if env.app.get("space_name", "unknown-space").lower() != "feature":
schedule = {
# Refresh materialized views everyday at 5am(EST).
"refresh_materialized_views": {
"task": "webservices.tasks.refresh.refresh_materialized_views",
"schedule": crontab(minute=0, hour=9),
},
# Reload DAILY_MODIFIED_STARTING_AO at 9pm(EST) except Sunday.
"reload_all_aos_daily_except_sunday": {
"task": "webservices.tasks.legal_docs.reload_all_aos_when_change",
Expand All @@ -31,12 +26,21 @@
"task": "webservices.tasks.legal_docs.refresh_most_recent_legal_doc",
"schedule": crontab(minute="*/5", hour="10-23"),
},
# Send modified legal case(during 6am-7pm EST) alerts to Slack every day at 7pm(EST)
"send_alert_legal_case": {
"task": "webservices.tasks.legal_docs.send_alert_most_recent_legal_case",
"schedule": crontab(minute=0, hour=23),
},
# Refresh materialized views everyday at 5am(EST).
"refresh_materialized_views": {
"task": "webservices.tasks.refresh.refresh_materialized_views",
"schedule": crontab(minute=0, hour=9),
},
# Snapshot Elasticsearch at 12am(EST) in Sunday.
"backup_elasticsearch_every_sunday": {
"task": "webservices.tasks.legal_docs.create_es_backup",
"schedule": crontab(minute=0, hour=4, day_of_week="sun"),
},

}


Expand Down
29 changes: 25 additions & 4 deletions webservices/tasks/legal_docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@
ORDER BY case_serial
"""

RECENTLY_MODIFIED_CASES_SEND_ALERT = """
SELECT case_no, case_type, pg_date, published_flg
FROM fecmur.cases_with_parsed_case_serial_numbers_vw
WHERE pg_date >= NOW() - '13 hour'::INTERVAL
ORDER BY case_serial
"""

SLACK_BOTS = "#bots"


Expand Down Expand Up @@ -106,7 +113,6 @@ def refresh_most_recent_aos(conn):
def refresh_most_recent_cases(conn):
logger.info(" Checking for modified cases(MUR/AF/ADR)...")
rs = conn.execute(RECENTLY_MODIFIED_CASES)
slack_message = ""
if rs.returns_rows:
load_count = 0
deleted_case_count = 0
Expand All @@ -116,13 +122,28 @@ def refresh_most_recent_cases(conn):
if row["published_flg"]:
load_count += 1
logger.info(" Total of %d case(s) loaded...", load_count)
slack_message = slack_message + str(row["case_type"]) + " " + str(row["case_no"]) + " found modified at " + str(row["pg_date"])
else:
deleted_case_count += 1
logger.info(" Total of %d case(s) unpublished...", deleted_case_count)
slack_message = " Total of %d case(s) unpublished...", str(deleted_case_count)
else:
logger.info(" No modified cases found")


@app.task(once={"graceful": True}, base=QueueOnce)
def send_alert_most_recent_legal_case():
# Send modified legal case(during 6am-7pm EST) alerts to Slack every day at 7pm(EST).
slack_message = ""
with db.engine.connect() as conn:
rs = conn.execute(RECENTLY_MODIFIED_CASES_SEND_ALERT)
if rs.returns_rows:
for row in rs:
if row["published_flg"]:
slack_message = slack_message + str(row["case_type"]) + " " + str(row["case_no"]) + " found published at " + str(row["pg_date"])
slack_message = slack_message + "\n"
else:
slack_message = slack_message + str(row["case_type"]) + " " + str(row["case_no"]) + " found unpublished at " + str(row["pg_date"])
slack_message = slack_message + "\n"

if slack_message:
slack_message = slack_message + " in {0} space".format(get_app_name())
slack_message = slack_message + " in " + get_app_name()
utils.post_to_slack(slack_message, SLACK_BOTS)
6 changes: 3 additions & 3 deletions webservices/tasks/refresh.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ def refresh_materialized_views():
"""Update incremental aggregates, itemized schedules, materialized views,
then slack a notification to the development team.
"""
manage.logger.info('Starting nightly refresh...')
manage.logger.info('Starting nightly refresh materialized views...')
try:
manage.refresh_materialized()
download.clear_bucket()
slack_message = '*Success* nightly updates for {0} completed'.format(get_app_name())
slack_message = '*Success* nightly update materialized views for {0} completed'.format(get_app_name())
utils.post_to_slack(slack_message, '#bots')
manage.logger.info(slack_message)
except Exception as error:
manage.logger.exception(error)
slack_message = '*ERROR* nightly update failed for {0}. Check logs.'.format(get_app_name())
slack_message = '*ERROR* nightly update materialized views failed for {0}. Check logs.'.format(get_app_name())
utils.post_to_slack(slack_message, '#bots')

0 comments on commit 1af499b

Please sign in to comment.