remove header banner when site is down

This commit is contained in:
Beverly Nguyen
2025-04-21 16:26:07 -07:00
parent 10c61440c9
commit 431dbb10dd
4 changed files with 40 additions and 33 deletions

View File

@@ -118,6 +118,8 @@ from notifications_utils.formatters import (
from notifications_utils.recipients import format_phone_number_human_readable
from notifications_utils.url_safe_token import generate_token
from app.utils.api_health import is_api_down
login_manager = LoginManager()
csrf = CSRFProtect()
talisman = Talisman()
@@ -185,6 +187,10 @@ def create_app(application):
# FEATURE_ABOUT_PAGE_ENABLED=feature_about_page_enabled,
# )
@application.context_processor
def inject_is_api_down():
return {"is_api_down": is_api_down()}
@application.context_processor
def inject_initial_signin_url():
ttl = 24 * 60 * 60

View File

@@ -19,7 +19,6 @@ from app.main.views.sub_navigation_dictionaries import (
about_notify_nav,
using_notify_nav,
)
from app.utils.api_health import is_api_down
from app.utils.user import user_is_logged_in
logger = logging.getLogger(__name__)
@@ -47,16 +46,10 @@ def index():
if current_user and current_user.is_authenticated:
return redirect(url_for("main.choose_account"))
try:
counts = status_api_client.get_count_of_live_services_and_organizations()
except Exception as e:
logger.warning(f"API down when loading homepage: {e}")
counts = None
return render_template(
"views/signedout.html",
sms_rate=CURRENT_SMS_RATE,
counts=counts,
is_api_down=is_api_down(),
counts=status_api_client.get_count_of_live_services_and_organizations()
)

View File

@@ -29,29 +29,31 @@
{% block header %}
{% include 'components/usa_banner.html' %}
{% if current_user.is_authenticated or current_service or current_user.platform_admin %}
<section class="usa-site-alert usa-site-alert--info" aria-label="Site alert,,,,">
<div class="usa-alert">
<div class="usa-alert__body">
<p class="usa-alert__heading text-bold">Notify.gov Service Ending</p>
<p class="usa-alert__text">
GSA will no longer offer the Notify.gov service after June 8th, 2025. Visit
<a class="usa-link" href="/notify-service-ending">Notify.gov Service Ending</a> for more information.
</p>
{% if not is_api_down %}
{% if current_user.is_authenticated or current_service or current_user.platform_admin %}
<section class="usa-site-alert usa-site-alert--info" aria-label="Site alert,,,,">
<div class="usa-alert">
<div class="usa-alert__body">
<p class="usa-alert__heading text-bold">Notify.gov Service Ending</p>
<p class="usa-alert__text">
GSA will no longer offer the Notify.gov service after June 8th, 2025. Visit
<a class="usa-link" href="/notify-service-ending">Notify.gov Service Ending</a> for more information.
</p>
</div>
</div>
</div>
</section>
{% else %}
<section class="usa-site-alert usa-site-alert--emergency usa-site-alert--no-heading" aria-label="Site alert,,,,">
<div class="usa-alert">
<div class="usa-alert__body">
<p class="usa-alert__heading text-bold">Notify.gov Service Ending</p>
<p class="usa-alert__text">
Notify.gov is no longer accepting new partners.
</p>
</section>
{% else %}
<section class="usa-site-alert usa-site-alert--emergency usa-site-alert--no-heading" aria-label="Site alert,,,,">
<div class="usa-alert">
<div class="usa-alert__body">
<p class="usa-alert__heading text-bold">Notify.gov Service Ending</p>
<p class="usa-alert__text">
Notify.gov is no longer accepting new partners.
</p>
</div>
</div>
</div>
</section>
</section>
{% endif %}
{% endif %}
{% include 'components/header.html' %}
{% endblock %}

View File

@@ -1,13 +1,19 @@
import os
import requests
import logging
from requests.exceptions import RequestException
logger = logging.getLogger(__name__)
def is_api_down():
api_base_url = os.getenv("API_BASE_URL", "http://localhost:6011")
api_base_url = os.getenv("API_HOST_NAME")
try:
response = requests.get(api_base_url, timeout=2)
return response.status_code != 200
except RequestException:
is_down = response.status_code != 200
if is_down:
logger.warning(f"API responded with status {response.status_code} at {api_base_url}")
return is_down
except RequestException as e:
logger.error(f"API down when loading homepage {e}")
return True