Coverage for benefits/core/forms.py: 100%
24 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-31 18:44 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-31 18:44 +0000
1from django import forms
2from django.utils.translation import gettext_lazy as _
4from benefits.core import models
7def get_active_agency_choices(placeholder="placeholder"):
8 agency_names = [(None, placeholder)]
9 for a in models.TransitAgency.all_active():
10 agency_names.append((a.slug, a.long_name))
12 return agency_names
15class ChooseAgencyForm(forms.Form):
16 """Form to select the agency to request transit benefits for."""
18 id = "form-agency-selection"
19 method = "POST"
21 select_transit_agency = forms.ChoiceField()
23 def __init__(self, *args, **kwargs):
24 super().__init__(*args, **kwargs)
26 placeholder = _("Choose your transit provider")
27 self.classes = "pt-lg-5 pt-8"
28 self.fields["select_transit_agency"] = forms.ChoiceField(
29 choices=get_active_agency_choices(placeholder),
30 label=_("Enroll today"),
31 label_suffix="",
32 required=True,
33 widget=forms.Select(
34 attrs={
35 "class": "form-select",
36 "aria-label": placeholder,
37 "data-custom-validity": _("Please choose a transit provider."),
38 }
39 ),
40 )
41 self.use_custom_validity = True
43 def clean(self):
44 cleaned_data = super().clean()
45 agency_slug = cleaned_data.get("select_transit_agency")
46 if agency_slug:
47 self.selected_transit_agency = models.TransitAgency.by_slug(agency_slug)
49 return cleaned_data