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

1from django import forms 

2from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm 

3 

4from benefits.core.mixins import ValidateRecaptchaMixin 

5from benefits.core.models import TransitAgencyGroup 

6 

7 

8class BenefitsPasswordResetForm(ValidateRecaptchaMixin, PasswordResetForm): 

9 pass 

10 

11 

12class BenefitsSetPasswordForm(ValidateRecaptchaMixin, SetPasswordForm): 

13 pass 

14 

15 

16class TransitAgencyGroupForm(forms.ModelForm): 

17 class Meta: 

18 model = TransitAgencyGroup 

19 fields = ["label", "transit_agencies"] 

20 

21 def clean_transit_agencies(self): 

22 """Check selected agencies for different transit processors. 

23 

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) 

29 

30 if len(transit_processors) > 1: 

31 raise forms.ValidationError("Agencies must all use the same transit processor.") 

32 

33 return transit_agencies