Skip to content

Commit

Permalink
refactor(view): simplify GET logic, context
Browse files Browse the repository at this point in the history
  • Loading branch information
thekaveman committed Jul 7, 2023
1 parent 8c7c6da commit 845e915
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 65 deletions.
77 changes: 15 additions & 62 deletions benefits/enrollment/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ def index(request):
session.update(request, origin=reverse(ROUTE_INDEX))

agency = session.agency(request)
verifier = session.verifier(request)

# POST back after payment processor form, process card token
if request.method == "POST":
Expand All @@ -70,73 +69,27 @@ def index(request):
analytics.returned_error(request, response.message)
raise Exception(response.message)

# GET enrollment index, with button to initiate payment processor connection
# GET enrollment index
else:
tokenize_button = "tokenize_card"
tokenize_retry_form = forms.CardTokenizeFailForm(ROUTE_RETRY)
tokenize_success_form = forms.CardTokenizeSuccessForm(auto_id=True, label_suffix="")

media = []

if verifier.eligibility_confirmed_item_heading or verifier.eligibility_confirmed_item_details:
heading = _(verifier.eligibility_confirmed_item_heading) if verifier.eligibility_confirmed_item_heading else None
details = (
_(verifier.eligibility_confirmed_item_details) % {"transit_agency_short_name": agency.short_name}
if verifier.eligibility_confirmed_item_details
else None
)
confirmed_eligibility_item = viewmodels.MediaItem(
icon=viewmodels.Icon("happybus", pgettext("image alt text", "core.icons.happybus")),
heading=heading,
details=details,
)
media.append(confirmed_eligibility_item)

help_link = reverse(ROUTE_HELP)
link_card_item = viewmodels.MediaItem(
icon=viewmodels.Icon("bankcardcheck", pgettext("image alt text", "core.icons.bankcardcheck")),
heading=_("enrollment.pages.index.link_card_item.heading"),
details=[
format_html(_("enrollment.pages.index.link_card_item.p[0]%(link)s") % {"link": f"{help_link}#littlepay"}),
_("enrollment.pages.index.link_card_item.p[1]"),
],
)
media.append(link_card_item)

page = viewmodels.Page(
title=_("enrollment.pages.index.title"),
headline=_("enrollment.pages.index.headline"),
forms=[tokenize_retry_form, tokenize_success_form],
buttons=[
viewmodels.Button.primary(
text=_("enrollment.buttons.payment_partner"), id=tokenize_button, url=f"#{tokenize_button}"
),
],
)
context = {"media": media}
context.update(page.context_dict())

# add agency details
agency_vm = viewmodels.TransitAgency(agency)
context.update(agency_vm.context_dict())

# and payment processor details
processor_vm = viewmodels.PaymentProcessor(
model=agency.payment_processor,
access_token_url=reverse(ROUTE_TOKEN),
element_id=f"#{tokenize_button}",
color="#046b99",
name=f"{agency.long_name} {_('partnered with')} {agency.payment_processor.name}",
)
context.update(processor_vm.context_dict())
logger.warning(f"card_tokenize_url: {context['payment_processor'].card_tokenize_url}")

# the tokenize form URLs are injected to page-generated Javascript
context["forms"] = {
"tokenize_retry": reverse(tokenize_retry_form.action_url),
"tokenize_success": reverse(tokenize_success_form.action_url),
context = {
"forms": [tokenize_retry_form, tokenize_success_form],
# the tokenize form URLs are injected to page-generated Javascript
"form_urls": {
"tokenize_retry": reverse(tokenize_retry_form.action_url),
"tokenize_success": reverse(tokenize_success_form.action_url),
},
"payment_processor": {
"card_tokenize_env": agency.payment_processor.card_tokenize_env,
"card_tokenize_func": agency.payment_processor.card_tokenize_func,
"card_tokenize_url": agency.payment_processor.card_tokenize_url,
},
}

logger.debug(f'card_tokenize_url: {context["payment_processor"]["card_tokenize_url"]}')

return TemplateResponse(request, TEMPLATE_INDEX, context)


Expand Down
6 changes: 3 additions & 3 deletions tests/pytest/enrollment/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,11 @@ def test_index_eligible_get(client):

assert response.status_code == 200
assert response.template_name == TEMPLATE_INDEX
assert "page" in response.context_data
assert "payment_processor" in response.context_data
assert "forms" in response.context_data
assert "tokenize_retry" in response.context_data["forms"]
assert "tokenize_success" in response.context_data["forms"]
assert "form_urls" in response.context_data
assert "tokenize_retry" in response.context_data["form_urls"]
assert "tokenize_success" in response.context_data["form_urls"]


@pytest.mark.django_db
Expand Down

0 comments on commit 845e915

Please sign in to comment.