Coverage for benefits/enrollment_init/views.py: 75%
28 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-08 19:50 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-08 19:50 +0000
1import logging
3from django.http import JsonResponse
4from django.views.generic import FormView, TemplateView
6from benefits.core.mixins import AgencySessionRequiredMixin, EligibleSessionRequiredMixin
7from benefits.enrollment import forms
8from benefits.enrollment.views import FlowSessionRequiredMixin
10from .routes import routes
12logger = logging.getLogger(__name__)
15class IndexView(AgencySessionRequiredMixin, EligibleSessionRequiredMixin, FlowSessionRequiredMixin, TemplateView):
16 """View for the enrollment landing page."""
18 template_name = "enrollment_init/index.html"
20 def get_context_data(self, **kwargs):
21 context = super().get_context_data(**kwargs)
23 context.update(
24 {
25 "cta_button": routes.ENROLLMENT_INIT_REGISTER_CARD,
26 "flow": self.flow,
27 "transit_processor": {
28 "name": "INIT",
29 "website": "https://www.initse.com/enus/solutions/fare-collection-revenue-management/",
30 },
31 }
32 )
33 return context
36class RegisterView(AgencySessionRequiredMixin, FlowSessionRequiredMixin, FormView):
37 """View for the page that tokenizes the user card."""
39 form_class = forms.CardTokenizeSuccessForm
41 route_system_error = routes.ENROLLMENT_SYSTEM_ERROR
43 route_tokenize_success = routes.ENROLLMENT_INIT_REGISTER_CARD
44 template_name = "enrollment_init/register-card.html"
46 def get_context_data(self, **kwargs):
47 context = super().get_context_data(**kwargs)
49 tokenize_system_error_form = forms.CardTokenizeFailForm(
50 self.route_system_error, "form-card-tokenize-fail-system-error"
51 )
52 tokenize_success_form = forms.CardTokenizeSuccessForm(
53 action_url=self.route_tokenize_success, auto_id=True, label_suffix=""
54 )
56 context.update(
57 {
58 "collect_js_api_key": self.agency.transit_processor.tokenization_api_key,
59 "forms": [tokenize_system_error_form, tokenize_success_form],
60 "form_success": tokenize_success_form.id,
61 "form_system_error": tokenize_system_error_form.id,
62 "success_url": self.route_tokenize_success,
63 }
64 )
65 return context
67 def form_valid(self, form):
68 card_token = form.cleaned_data.get("card_token")
69 return JsonResponse({"status": "ok", "tokenized_card": card_token})