diff --git a/benefits/core/context_processors.py b/benefits/core/context_processors.py
index 131443310..7207a32c5 100644
--- a/benefits/core/context_processors.py
+++ b/benefits/core/context_processors.py
@@ -4,7 +4,33 @@
from django.conf import settings
from django.urls import reverse
-from . import session
+from . import models, session
+
+
+def _agency_context(agency):
+ return {
+ "long_name": agency.long_name,
+ "short_name": agency.short_name,
+ "info_url": agency.info_url,
+ "phone": agency.phone,
+ }
+
+
+def agency(request):
+ """Context processor adds some information about the active agency to the request context."""
+ agency = session.agency(request)
+
+ if agency is None:
+ return {}
+
+ return {"agency": _agency_context(agency)}
+
+
+def active_agencies(request):
+ """Context processor adds some information about all active agencies to the request context."""
+ agencies = models.TransitAgency.all_active()
+
+ return {"active_agencies": [_agency_context(agency) for agency in agencies]}
def analytics(request):
diff --git a/benefits/core/templates/core/help.html b/benefits/core/templates/core/help.html
index 36404ba5d..ac1b1ca5d 100644
--- a/benefits/core/templates/core/help.html
+++ b/benefits/core/templates/core/help.html
@@ -24,7 +24,7 @@
-
{% include "core/includes/agency-links.html" with buttons=agency_links %}
+
+ {% if agency %}
+ {% include "core/includes/agency-links.html" %}
+ {% else %}
+ {% for agency in active_agencies %}
+ {% include "core/includes/agency-links.html" with agency_name=agency.long_name phone=agency.phone info_url=agency.info_url %}
+ {% endfor %}
+ {% endif %}
+
- {% endif %}
diff --git a/benefits/core/templates/core/includes/agency-links.html b/benefits/core/templates/core/includes/agency-links.html
index f6b6271c0..56fa6e5c4 100644
--- a/benefits/core/templates/core/includes/agency-links.html
+++ b/benefits/core/templates/core/includes/agency-links.html
@@ -1,9 +1,3 @@
-{% for agency_button in buttons %}
- {% if agency_button.label %}
{% endif %}
-
- {{ agency_button.text }}
-
-{% endfor %}
+
+
{{ phone | default:agency.phone }}
+
{{ info_url | default:agency.info_url }}
diff --git a/benefits/core/viewmodels.py b/benefits/core/viewmodels.py
index b58928de1..e07bb0987 100644
--- a/benefits/core/viewmodels.py
+++ b/benefits/core/viewmodels.py
@@ -35,22 +35,6 @@ def __init__(self, **kwargs):
self.target = kwargs.get("target")
self.rel = kwargs.get("rel")
- @staticmethod
- def agency_contact_links(agency):
- """Create link buttons for agency contact information."""
- return [
- Button.link(label=agency.long_name, text=agency.phone, url=f"tel:{agency.phone}"),
- Button.link(text=agency.info_url, url=agency.info_url, target="_blank", rel="noopener noreferrer"),
- ]
-
- @staticmethod
- def link(**kwargs):
- classes = kwargs.pop("classes", [])
- if isinstance(classes, str):
- classes = classes.split(" ")
- classes.insert(0, "btn-link")
- return Button(classes=classes, **kwargs)
-
@staticmethod
def primary(**kwargs):
classes = kwargs.pop("classes", [])
diff --git a/benefits/core/views.py b/benefits/core/views.py
index 6b310e7c6..3ce5f626c 100644
--- a/benefits/core/views.py
+++ b/benefits/core/views.py
@@ -64,20 +64,12 @@ def agency_public_key(request, agency):
@pageview_decorator
def help(request):
"""View handler for the help page."""
- if session.active_agency(request):
- agency = session.agency(request)
- agency_links = viewmodels.Button.agency_contact_links(agency)
- else:
- agency_links = [btn for a in models.TransitAgency.all_active() for btn in viewmodels.Button.agency_contact_links(a)]
-
page = viewmodels.Page(
title=_("core.buttons.help"),
headline=_("core.buttons.help"),
)
ctx = page.context_dict()
- ctx["agency_links"] = agency_links
-
return TemplateResponse(request, TEMPLATE_HELP, ctx)
diff --git a/benefits/eligibility/templates/eligibility/unverified.html b/benefits/eligibility/templates/eligibility/unverified.html
index e88069bf0..9a8d50338 100644
--- a/benefits/eligibility/templates/eligibility/unverified.html
+++ b/benefits/eligibility/templates/eligibility/unverified.html
@@ -12,11 +12,9 @@
- {% if agency_links %}
-
-
{% include "core/includes/agency-links.html" with buttons=agency_links %}
-
- {% endif %}
+
+
{% include "core/includes/agency-links.html" %}
+
{% include "core/includes/button--home.html" %}
diff --git a/benefits/eligibility/views.py b/benefits/eligibility/views.py
index 24bea84e9..1b0bf4cb2 100644
--- a/benefits/eligibility/views.py
+++ b/benefits/eligibility/views.py
@@ -181,8 +181,6 @@ def unverified(request):
analytics.returned_fail(request, types_to_verify)
- agency_links = viewmodels.Button.agency_contact_links(agency)
-
page = viewmodels.Page(
title=_(verifier.unverified_title),
headline=_("eligibility.pages.unverified.headline"),
@@ -191,6 +189,4 @@ def unverified(request):
)
ctx = page.context_dict()
- ctx["agency_links"] = agency_links
-
return TemplateResponse(request, TEMPLATE_UNVERIFIED, ctx)
diff --git a/benefits/enrollment/templates/enrollment/retry.html b/benefits/enrollment/templates/enrollment/retry.html
index 82144b44b..bf6af5f3d 100644
--- a/benefits/enrollment/templates/enrollment/retry.html
+++ b/benefits/enrollment/templates/enrollment/retry.html
@@ -12,16 +12,14 @@
- {% if agency_links %}
-
{% include "core/includes/agency-links.html" with buttons=agency_links %}
+
{% include "core/includes/agency-links.html" %}
- {% endif %}
{% if retry_button %}
-
-
{% include "core/includes/button.html" with button=retry_button %}
-
+
+
{% include "core/includes/button.html" with button=retry_button %}
+
{% endif %}
diff --git a/benefits/enrollment/views.py b/benefits/enrollment/views.py
index 77054f2b7..a94fc617c 100644
--- a/benefits/enrollment/views.py
+++ b/benefits/enrollment/views.py
@@ -96,7 +96,6 @@ def retry(request):
analytics.returned_retry(request)
form = forms.CardTokenizeFailForm(request.POST)
if form.is_valid():
- agency = session.agency(request)
page = viewmodels.Page(
title=_("enrollment.pages.retry.title"),
icon=viewmodels.Icon("bankcardquestion", pgettext("image alt text", "core.icons.bankcardquestion")),
@@ -105,7 +104,6 @@ def retry(request):
)
ctx = page.context_dict()
- ctx["agency_links"] = viewmodels.Button.agency_contact_links(agency)
ctx["retry_button"] = viewmodels.Button.primary(text=_("core.buttons.retry"), url=session.origin(request))
return TemplateResponse(request, TEMPLATE_RETRY, ctx)
diff --git a/benefits/settings.py b/benefits/settings.py
index e3711f49d..0d274c093 100644
--- a/benefits/settings.py
+++ b/benefits/settings.py
@@ -111,6 +111,8 @@ def _filter_empty(ls):
template_ctx_processors = [
"django.template.context_processors.request",
"django.contrib.messages.context_processors.messages",
+ "benefits.core.context_processors.agency",
+ "benefits.core.context_processors.active_agencies",
"benefits.core.context_processors.analytics",
"benefits.core.context_processors.authentication",
"benefits.core.context_processors.origin",
diff --git a/tests/pytest/core/test_views.py b/tests/pytest/core/test_views.py
index a675eb0dd..2742022d6 100644
--- a/tests/pytest/core/test_views.py
+++ b/tests/pytest/core/test_views.py
@@ -113,15 +113,12 @@ def test_help(client):
@pytest.mark.django_db
-def test_help_with_session_agency(mocked_session_agency, client):
+@pytest.mark.usefixtures("mocked_session_agency")
+def test_help_with_session_agency(client):
path = reverse(ROUTE_HELP)
response = client.get(path)
assert response.status_code == 200
- # mocked_session_agency is Mocked version of the session.agency() function
- # call it (with a None request) to return the sample agency
- agency = mocked_session_agency(None)
- assert agency.long_name in str(response.content)
@pytest.mark.django_db