Free and open source ticket system written in python
1from typing import Any
2from django import forms
3from django.conf import settings
4from django.utils.translation import gettext_lazy as _
5from datetime import datetime
6
7class FblAuthForm(forms.Form):
8 badge_number = forms.CharField(required=True)
9 dob = forms.CharField(required=True)
10
11 def clean(self) -> dict[str, Any]:
12 cleaned_data = super(FblAuthForm, self).clean()
13 badge_number = cleaned_data.get("badge_number")
14 dob = cleaned_data.get("dob")
15
16 if not badge_number:
17 raise forms.ValidationError(
18 _("Badge number is required")
19 )
20
21 try:
22 int(badge_number)
23 except ValueError:
24 raise forms.ValidationError(
25 _("Badge number must be a number")
26 )
27
28 if not dob:
29 raise forms.ValidationError(
30 _("Date of birth is required")
31 )
32 try:
33 dob = datetime.strptime(dob, "%d/%m/%Y").strftime("%Y-%m-%d")
34 except ValueError:
35 raise forms.ValidationError(
36 _("Date of birth must be in the format DD/MM/YYYY")
37 )
38 cleaned_data["dob"] = dob
39
40 return cleaned_data
41
42class FblAuthCodeForm(FblAuthForm):
43 validation_code = forms.CharField(required=True)
44
45 def clean(self) -> dict[str, Any]:
46 cleaned_data = super(FblAuthCodeForm, self).clean()
47 validation_code = cleaned_data.get("validation_code")
48
49 if not validation_code:
50 raise forms.ValidationError(
51 _("The validation code is required. Please check your emails.")
52 )
53
54 return cleaned_data
55
56class RegistrationCompletionForm(forms.Form):
57 email = forms.EmailField(required=True)
58
59 def clean(self) -> dict[str, Any]:
60 cleaned_data = super(RegistrationCompletionForm, self).clean()
61 email = cleaned_data.get("email")
62
63 if not email:
64 raise forms.ValidationError(
65 _("A Mail is required for notifications.")
66 )
67
68 return cleaned_data