Merge pull request #2737 from GSA/2721-create-enums-and-replace-hardcoded-status-strings-with-enums

PART 1: Created and implemented enums throughout the codebase
This commit is contained in:
Beverly Nguyen
2025-07-09 15:27:48 -07:00
committed by GitHub
13 changed files with 135 additions and 52 deletions

View File

@@ -1,6 +1,7 @@
from flask import abort, render_template, request, url_for
from app import current_service, job_api_client
from app.enums import NotificationStatus
from app.formatters import get_time_left
from app.main import main
from app.utils.pagination import (
@@ -78,10 +79,6 @@ def handle_pagination(jobs, service_id, page):
return prev_page, next_page, pagination
JOB_STATUS_DELIVERED = "delivered"
JOB_STATUS_FAILED = "failed"
def get_job_statistics(job, status):
statistics = job.get("statistics", [])
for stat in statistics:
@@ -109,8 +106,8 @@ def create_job_dict_entry(job):
"activity_time": activity_time,
"created_by": job.get("created_by"),
"template_name": job.get("template_name"),
"delivered_count": get_job_statistics(job, JOB_STATUS_DELIVERED),
"failed_count": get_job_statistics(job, JOB_STATUS_FAILED),
"delivered_count": get_job_statistics(job, NotificationStatus.DELIVERED),
"failed_count": get_job_statistics(job, NotificationStatus.FAILED),
}

View File

@@ -2,6 +2,7 @@ from flask import abort, flash, redirect, render_template, session, url_for
from flask_login import current_user
from markupsafe import Markup
from app.enums import InvitedOrgUserStatus, InvitedUserStatus
from app.main import main
from app.models.organization import Organization
from app.models.service import Service
@@ -29,14 +30,14 @@ def accept_invite(token):
abort(403)
if invited_user.status == "cancelled":
if invited_user.status == InvitedUserStatus.CANCELLED:
service = Service.from_id(invited_user.service)
return render_template(
"views/cancelled-invitation.html",
from_user=invited_user.from_user.name,
service_name=service.name,
)
if invited_user.status == "accepted":
if invited_user.status == InvitedUserStatus.ACCEPTED:
session.pop("invited_user_id", None)
service = Service.from_id(invited_user.service)
return redirect(
@@ -104,7 +105,7 @@ def accept_org_invite(token):
abort(403)
if invited_org_user.status == "cancelled":
if invited_org_user.status == InvitedOrgUserStatus.CANCELLED:
organization = Organization.from_id(invited_org_user.organization)
return render_template(
"views/cancelled-invitation.html",
@@ -112,7 +113,7 @@ def accept_org_invite(token):
organization_name=organization.name,
)
if invited_org_user.status == "accepted":
if invited_org_user.status == InvitedOrgUserStatus.ACCEPTED:
session.pop("invited_org_user_id", None)
return redirect(
url_for("main.organization_dashboard", org_id=invited_org_user.organization)

View File

@@ -23,6 +23,7 @@ from app import (
notification_api_client,
service_api_client,
)
from app.enums import JobStatus
from app.formatters import get_time_left, message_count_noun
from app.main import main
from app.main.forms import SearchNotificationsForm
@@ -398,7 +399,7 @@ def get_job_partials(job):
counts=_get_job_counts(job),
status=filter_args["status"],
notifications_deleted=(
job.status == "finished" and not notifications["notifications"]
job.status == JobStatus.FINISHED and not notifications["notifications"]
),
)
service_data_retention_days = current_service.get_days_of_retention(

View File

@@ -15,6 +15,7 @@ from flask import (
)
from app import redis_client, user_api_client
from app.enums import InvitedUserStatus
from app.main import main
from app.main.forms import (
RegisterUserFromOrgInviteForm,
@@ -254,14 +255,14 @@ def get_invited_user_email_address(invited_user_id):
def invited_user_accept_invite(invited_user_id):
invited_user = InvitedUser.by_id(invited_user_id)
if invited_user.status == "expired":
if invited_user.status == InvitedUserStatus.EXPIRED:
current_app.logger.error("User invitation has expired")
flash(
"Your invitation has expired; please contact the person who invited you for additional help."
)
abort(401)
if invited_user.status == "cancelled":
if invited_user.status == InvitedUserStatus.CANCELLED:
current_app.logger.error("User invitation has been cancelled")
flash(
"Your invitation is no longer valid; please contact the person who invited you for additional help."

View File

@@ -21,6 +21,7 @@ from app import (
organizations_client,
service_api_client,
)
from app.enums import VerificationStatus
from app.event_handlers import (
create_archive_service_event,
create_resume_service_event,
@@ -397,10 +398,10 @@ def get_service_verify_reply_to_address_partials(service_id, notification_id):
if replace:
existing = current_service.get_email_reply_to_address(replace)
existing_is_default = existing["is_default"]
verification_status = "pending"
verification_status = VerificationStatus.PENDING
is_default = True if (request.args.get("is_default", False) == "True") else False
if notification["status"] in DELIVERED_STATUSES:
verification_status = "success"
verification_status = VerificationStatus.SUCCESS
if notification["to"] not in [
i["email_address"] for i in current_service.email_reply_to_addresses
]:
@@ -441,7 +442,7 @@ def get_service_verify_reply_to_address_partials(service_id, notification_id):
first_email_address=first_email_address,
replace=replace,
),
"stop": 0 if verification_status == "pending" else 1,
"stop": 0 if verification_status == VerificationStatus.PENDING else 1,
}