def index(request): """View handler for the eligibility verification getting started screen.""" session.update(request, eligibility_types=[], origin=reverse("eligibility:index")) page = viewmodels.Page( title=_("eligibility.index.title"), content_title=_("eligibility.index.content_title"), media=[ viewmodels.MediaItem( icon=viewmodels.Icon("idcardcheck", pgettext("image alt text", "core.icons.idcardcheck")), heading=_("eligibility.index.item1.title"), details=_("eligibility.index.item1.text"), ), viewmodels.MediaItem( icon=viewmodels.Icon("bankcardcheck", pgettext("image alt text", "core.icons.bankcardcheck")), heading=_("eligibility.index.item2.title"), details=_("eligibility.index.item2.text"), ), ], paragraphs=[_("eligibility.index.p1")], image=_index_image(), button=viewmodels.Button.primary(text=_("eligibility.index.button"), url=reverse("eligibility:confirm")), ) return PageTemplateResponse(request, page)
def _index(request): """Helper handles GET requests to discounts index.""" agency = session.agency(request) _check_access_token(request, agency) tokenize_button = "tokenize_card" tokenize_retry_form = forms.CardTokenizeFailForm("discounts:retry") tokenize_success_form = forms.CardTokenizeSuccessForm(auto_id=True, label_suffix="") page = viewmodels.Page( title=_("discounts.index.title"), content_title=_("discounts.index.content_title"), icon=viewmodels.Icon( "idcardcheck", pgettext("image alt text", "core.icons.idcardcheck")), paragraphs=[_("discounts.index.p1"), _("discounts.index.p2")], classes="text-lg-center", forms=[tokenize_retry_form, tokenize_success_form], buttons=[ viewmodels.Button.primary( text=_("discounts.buttons.paymentpartner"), id=tokenize_button, url=f"#{tokenize_button}"), viewmodels.Button.link(classes="btn-sm", text=_("discounts.buttons.paymentoptions"), url=reverse("core:payment_options")), ], ) context = page.context_dict() # add agency details agency_vm = viewmodels.TransitAgency(agency) context.update(agency_vm.context_dict()) # and discount provider details provider_vm = viewmodels.DiscountProvider( model=agency.discount_provider, access_token=session.token(request), element_id=f"#{tokenize_button}", color="#046b99", name= f"{agency.long_name} {_('partnered with')} {agency.discount_provider.name}", ) context.update(provider_vm.context_dict()) logger.info(f"card_tokenize_url: {context['provider'].card_tokenize_url}") # the tokenize form URLs are injected to page-generated Javascript context.update({ "forms": { "tokenize_retry": reverse(tokenize_retry_form.action_url), "tokenize_success": reverse(tokenize_success_form.action_url), } }) return TemplateResponse(request, "discounts/index.html", context)
def success(request): """View handler for the final success page.""" page = viewmodels.Page( title=_("discounts.success.title"), icon=viewmodels.Icon( "paymentcardcheck", pgettext("image alt text", "core.icons.bankcardcheck")), content_title=_("discounts.success.title"), paragraphs=[_("discounts.success.p1"), _("discounts.success.p2")], ) return TemplateResponse(request, "discounts/success.html", page.context_dict())
def unverified(request): """View handler for the unverified eligibility page.""" # tel: link to agency phone number agency = session.agency(request) buttons = [viewmodels.Button.agency_phone_link(agency)] page = viewmodels.Page( title=_("eligibility.unverified.title"), content_title=_("eligibility.unverified.content_title"), icon=viewmodels.Icon("idcardquestion", pgettext("image alt text", "core.icons.idcardquestion")), paragraphs=[_("eligibility.unverified.p1"), _("eligibility.unverified.p2")], buttons=buttons, classes="text-lg-center", ) return PageTemplateResponse(request, page)
def retry(request): """View handler for a recoverable failure condition.""" if request.method == "POST": form = forms.CardTokenizeFailForm(request.POST) if form.is_valid(): agency = session.agency(request) page = viewmodels.Page( title=_("discounts.retry.title"), icon=viewmodels.Icon( "bankcardquestion", pgettext("image alt text", "core.icons.bankcardquestion")), content_title=_("discounts.retry.title"), paragraphs=[_("discounts.retry.p1")], buttons=[ viewmodels.Button.agency_phone_link(agency), viewmodels.Button.primary(text=_("discounts.retry.button"), url=session.origin(request)), ], ) return PageTemplateResponse(request, page) else: raise Exception("Invalid retry submission.") else: raise Exception("This view method only supports POST.")