mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 18:01:08 -05:00
Working on getting expiration implemented.
Signed-off-by: Cliff Hill <Clifford.hill@gsa.gov>
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -92,3 +92,7 @@ varsfile*
|
||||
secrets.auto.tfvars
|
||||
terraform.tfstate
|
||||
terraform.tfstate.backup
|
||||
|
||||
|
||||
# Pyenv
|
||||
.python-version
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
3.9
|
||||
@@ -16,7 +16,7 @@ from app.config import QueueNames
|
||||
from app.dao.invited_org_user_dao import (
|
||||
delete_org_invitations_created_more_than_two_days_ago,
|
||||
)
|
||||
from app.dao.invited_user_dao import delete_invitations_created_more_than_two_days_ago
|
||||
from app.dao.invited_user_dao import expire_invitations_created_more_than_two_days_ago
|
||||
from app.dao.jobs_dao import (
|
||||
dao_set_scheduled_jobs_to_pending,
|
||||
dao_update_job,
|
||||
@@ -68,17 +68,20 @@ def delete_verify_codes():
|
||||
raise
|
||||
|
||||
|
||||
@notify_celery.task(name="delete-invitations")
|
||||
def delete_invitations():
|
||||
@notify_celery.task(name="expire-or-delete-invitations")
|
||||
def expire_or_delete_invitations():
|
||||
try:
|
||||
start = datetime.utcnow()
|
||||
deleted_invites = delete_invitations_created_more_than_two_days_ago()
|
||||
deleted_invites += delete_org_invitations_created_more_than_two_days_ago()
|
||||
current_app.logger.info(
|
||||
"Delete job started {} finished {} deleted {} invitations".format(
|
||||
start, datetime.utcnow(), deleted_invites
|
||||
)
|
||||
)
|
||||
expired_invites = expire_invitations_created_more_than_two_days_ago()
|
||||
current_app.logger.info(f"Expire job started {start} finished {datetime.utcnow()} expired {len(expired_invites)} invitations")
|
||||
except SQLAlchemyError:
|
||||
current_app.logger.exception("Failed to expire invitations")
|
||||
raise
|
||||
|
||||
try:
|
||||
start = datetime.utcnow()
|
||||
deleted_invites = delete_org_invitations_created_more_than_two_days_ago()
|
||||
current_app.logger.info(f"Delete job started {start} finished {datetime.utcnow()} deleted {len(deleted_invites)} invitations")
|
||||
except SQLAlchemyError:
|
||||
current_app.logger.exception("Failed to delete invitations")
|
||||
raise
|
||||
|
||||
@@ -194,8 +194,8 @@ class Config(object):
|
||||
"schedule": timedelta(minutes=63),
|
||||
"options": {"queue": QueueNames.PERIODIC},
|
||||
},
|
||||
"delete-invitations": {
|
||||
"task": "delete-invitations",
|
||||
"expire-or-delete-invitations": {
|
||||
"task": "expire-or-delete-invitations",
|
||||
"schedule": timedelta(minutes=66),
|
||||
"options": {"queue": QueueNames.PERIODIC},
|
||||
},
|
||||
|
||||
@@ -21,11 +21,11 @@ def get_invited_users_for_service(service_id):
|
||||
return InvitedUser.query.filter_by(service_id=service_id).all()
|
||||
|
||||
|
||||
def delete_invitations_created_more_than_two_days_ago():
|
||||
deleted = (
|
||||
def expire_invitations_created_more_than_two_days_ago():
|
||||
expired = (
|
||||
db.session.query(InvitedUser)
|
||||
.filter(InvitedUser.created_at <= datetime.utcnow() - timedelta(days=2))
|
||||
.delete()
|
||||
.update({InvitedUser.expired: True, InvitedUser.status: "expired"})
|
||||
)
|
||||
db.session.commit()
|
||||
return deleted
|
||||
return expired
|
||||
|
||||
@@ -11,7 +11,7 @@ from app.celery.scheduled_tasks import (
|
||||
check_for_missing_rows_in_completed_jobs,
|
||||
check_for_services_with_high_failure_rates_or_sending_to_tv_numbers,
|
||||
check_job_status,
|
||||
delete_invitations,
|
||||
expire_or_delete_invitations,
|
||||
delete_verify_codes,
|
||||
replay_created_notifications,
|
||||
run_scheduled_jobs,
|
||||
@@ -44,11 +44,11 @@ def test_should_call_delete_invotations_on_delete_invitations_task(
|
||||
notify_db_session, mocker
|
||||
):
|
||||
mocker.patch(
|
||||
"app.celery.scheduled_tasks.delete_invitations_created_more_than_two_days_ago"
|
||||
"app.celery.scheduled_tasks.expire_invitations_created_more_than_two_days_ago"
|
||||
)
|
||||
delete_invitations()
|
||||
expire_or_delete_invitations()
|
||||
assert (
|
||||
scheduled_tasks.delete_invitations_created_more_than_two_days_ago.call_count
|
||||
scheduled_tasks.expire_invitations_created_more_than_two_days_ago.call_count
|
||||
== 1
|
||||
)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ from sqlalchemy.orm.exc import NoResultFound
|
||||
|
||||
from app import db
|
||||
from app.dao.invited_user_dao import (
|
||||
delete_invitations_created_more_than_two_days_ago,
|
||||
expire_invitations_created_more_than_two_days_ago,
|
||||
get_invited_user_by_id,
|
||||
get_invited_user_by_service_and_id,
|
||||
get_invited_users_for_service,
|
||||
@@ -122,7 +122,7 @@ def test_should_delete_all_invitations_more_than_one_day_old(
|
||||
make_invitation(sample_user, sample_service, age=timedelta(hours=48))
|
||||
make_invitation(sample_user, sample_service, age=timedelta(hours=48))
|
||||
assert len(InvitedUser.query.all()) == 2
|
||||
delete_invitations_created_more_than_two_days_ago()
|
||||
expire_invitations_created_more_than_two_days_ago()
|
||||
assert len(InvitedUser.query.all()) == 0
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ def test_should_not_delete_invitations_less_than_two_days_old(
|
||||
)
|
||||
|
||||
assert len(InvitedUser.query.all()) == 2
|
||||
delete_invitations_created_more_than_two_days_ago()
|
||||
expire_invitations_created_more_than_two_days_ago()
|
||||
assert len(InvitedUser.query.all()) == 1
|
||||
assert InvitedUser.query.first().email_address == "valid@2.com"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user