Coverage for benefits / core / admin / forms.py: 100%
18 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-01 15:39 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-01 15:39 +0000
1from django import forms
2from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm
4from benefits.core.mixins import ValidateRecaptchaMixin
5from benefits.core.models import TransitAgencyGroup
8class BenefitsPasswordResetForm(ValidateRecaptchaMixin, PasswordResetForm):
9 pass
12class BenefitsSetPasswordForm(ValidateRecaptchaMixin, SetPasswordForm):
13 pass
16class TransitAgencyGroupForm(forms.ModelForm):
17 class Meta:
18 model = TransitAgencyGroup
19 fields = ["label", "transit_agencies"]
21 def clean_transit_agencies(self):
22 """Check selected agencies for different transit processors.
24 This cannot be done in the model's clean() because of how
25 ManyToMany relationships are added after initial object creation.
26 """
27 transit_agencies = self.cleaned_data.get("transit_agencies")
28 transit_processors = set(agency.transit_processor for agency in transit_agencies)
30 if len(transit_processors) > 1:
31 raise forms.ValidationError("Agencies must all use the same transit processor.")
33 return transit_agencies