creating error page for tech difficulties

This commit is contained in:
Beverly Nguyen
2025-04-17 15:01:22 -07:00
parent 3e0e290dc0
commit b4e239c9bb
5 changed files with 44 additions and 25 deletions

View File

@@ -19,6 +19,7 @@ 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__)
@@ -51,11 +52,11 @@ def index():
except Exception as e:
logger.warning(f"API down when loading homepage: {e}")
counts = None
print(counts)
return render_template(
"views/signedout.html",
sms_rate=CURRENT_SMS_RATE,
counts=counts,
is_api_down=is_api_down()
)

View File

@@ -0,0 +1,19 @@
{% block content %}
<section class="grid-container usa-section margin-top-5 margin-bottom-5">
<div class="grid-row flex-justify-center">
<div class="desktop:grid-col-3 tablet:grid-col-4 mobile:grid-col-12 flex-align-center">
<img
class="width-tablet tablet:width-full"
src="{{ asset_url('images/api-error.svg') }}"
alt="Mobile phone showing error screen"/>
</div>
<div class="desktop:grid-col-6 tablet:grid-col-12 padding-left-0 desktop:padding-left-5">
<h1 class="font-body-3xl line-height-sans-2 text-bold">
There's currently a technical issue.
</h1>
<p class="font-body-lg line-height-sans-2">Thank you for your patience while we work on it. Notify will be back soon.</p>
</div>
</div>
</div>
</section>
{% endblock %}

View File

@@ -6,13 +6,13 @@ import usaButton %} {% block meta %}
/>
{% endblock %}
{% block pageTitle %} Notify.gov
{% if counts %} - There's currently a technical issue {% endif %}
{% if is_api_down %} - There's currently a technical issue {% endif %}
{% endblock %}
{% block main %}
{% block beforeContent %}{% endblock %}
<main id="main-content" role="main">
{% if counts %}
{% if is_api_down %}
<div class="usa-alert usa-alert--info usa-alert--slim" aria-label="Site alert,,,,">
<div class="grid-container padding-x-0">
<div class="usa-alert__body">
@@ -24,24 +24,8 @@ import usaButton %} {% block meta %}
</div>
{% endif %}
{% block content %}
{% if counts %}
<section class="grid-container usa-section margin-top-5 margin-bottom-5">
<div class="grid-row flex-justify-center">
<div class="desktop:grid-col-3 tablet:grid-col-4 mobile:grid-col-12 flex-align-center">
<img
class="width-tablet tablet:width-full"
src="{{ asset_url('images/api-error.svg') }}"
alt="Mobile phone showing error screen"/>
</div>
<div class="desktop:grid-col-6 tablet:grid-col-12 padding-left-0 desktop:padding-left-5">
<h1 class="font-body-3xl line-height-sans-2 text-bold">
There's currently a technical issue.
</h1>
<p class="font-body-lg line-height-sans-2">Thank you for your patience while we work on it. Notify will be back soon.</p>
</div>
</div>
</div>
</section>
{% if is_api_down %}
{% include "error/technical_difficulties.html" %}
{% endif %}
<section class="usa-section--dark usa-hero" aria-label="Introduction">
<div class="grid-container padding-y-4">

13
app/utils/api_health.py Normal file
View File

@@ -0,0 +1,13 @@
import os
import requests
from requests.exceptions import RequestException
def is_api_down():
api_base_url = os.getenv("API_BASE_URL", "http://localhost:6011")
try:
response = requests.get(api_base_url, timeout=2)
return response.status_code != 200
except RequestException:
return True

View File

@@ -1,8 +1,10 @@
from flask import current_app
import mistune
from notifications_utils.formatters import create_sanitised_html_for_url
import re
import html
import re
import mistune
from flask import current_app
from notifications_utils.formatters import create_sanitised_html_for_url
LINK_STYLE = "word-wrap: break-word; color: #1D70B8;"