Working on getting expiration implemented.

Signed-off-by: Cliff Hill <Clifford.hill@gsa.gov>
This commit is contained in:
Cliff Hill
2023-11-07 15:28:27 -05:00
parent 570ee6cd86
commit 3e6a7931d8
7 changed files with 30 additions and 24 deletions

4
.gitignore vendored
View File

@@ -92,3 +92,7 @@ varsfile*
secrets.auto.tfvars
terraform.tfstate
terraform.tfstate.backup
# Pyenv
.python-version

View File

@@ -1 +0,0 @@
3.9

View File

@@ -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

View File

@@ -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},
},

View File

@@ -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

View File

@@ -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
)

View File

@@ -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"