55from django_recaptcha .widgets import ReCaptchaV2Invisible
66from localflavor .ro .forms import ROCNPField
77
8+ from donations .common .validation .phone_number import validate_phone_number
9+
810
911class DonationForm (forms .Form ):
1012 l_name = forms .CharField (max_length = 100 , label = _ ("Last name" ), required = True , strip = True )
1113 f_name = forms .CharField (max_length = 100 , label = _ ("First name" ), required = True , strip = True )
1214 initial = forms .CharField (max_length = 1 , label = _ ("Initial" ), required = True )
1315 cnp = ROCNPField (label = "CNP" , required = True )
1416
15- email_address = forms .EmailField (label = _ ("Email" ), required = True )
17+ # limit the email address to 200 characters because that is the limit in ANAF's form
18+ email_address = forms .EmailField (label = _ ("Email" ), max_length = 200 , required = True )
1619 phone_number = forms .CharField (max_length = 20 , label = _ ("Phone" ), required = False , strip = True )
1720
1821 street_name = forms .CharField (max_length = 100 , label = _ ("Street" ), required = True , strip = True )
@@ -39,3 +42,13 @@ def __init__(self, *args, **kwargs):
3942
4043 def clean_agree_contact (self ):
4144 return not self .cleaned_data ["agree_contact" ]
45+
46+ def clean_phone_number (self ):
47+ raw_phone_number = self .cleaned_data ["phone_number" ]
48+
49+ phone_number_validation = validate_phone_number (raw_phone_number )
50+
51+ if phone_number_validation ["status" ] == "error" :
52+ raise forms .ValidationError (phone_number_validation ["result" ])
53+
54+ return phone_number_validation ["result" ]
0 commit comments