示例#1
0
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)
示例#2
0
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)
示例#3
0
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())
示例#4
0
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)
示例#5
0
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.")