Files
scha/schasite/forms.py
2025-04-23 09:33:58 -05:00

152 lines
4.8 KiB
Python

from django import forms
from django.forms import ModelForm
from .models import (
Membership,
CommunityPost,
AddressModel1,
MembershipPerson,
MembershipCommittee,
MembershipServices,
)
from phonenumber_field.formfields import PhoneNumberField
from django.core.exceptions import ValidationError
from django_recaptcha.fields import ReCaptchaField
from django.conf import settings
from django_recaptcha.widgets import ReCaptchaV3
class CaptchaForm(forms.Form):
captcha = ReCaptchaField(
public_key=settings.RECAPTCHA_PUBLIC_KEY,
private_key=settings.RECAPTCHA_PRIVATE_KEY,
widget=ReCaptchaV3(
attrs={
'required_score':0.85,
}
),
)
class ChildrenForm(ModelForm):
class Meta:
model = Membership
fields = ["children"]
class AddressForm(ModelForm):
class Meta:
model = AddressModel1
fields = ["address_1", "address_2", "city", "state", "zip_code"]
class CommunityPostForm(ModelForm):
class Meta:
model = CommunityPost
fields = ['title','category','content']
class PeopleForm(ModelForm):
phone_number = PhoneNumberField(required=False)
def clean(self):
cleaned_data = super().clean()
if cleaned_data.get("phone_number"):
if (
len(cleaned_data.get("first_name")) == 0
or len(cleaned_data.get("last_name")) == 0
or len(cleaned_data.get("email")) == 0
or len(cleaned_data.get("phone_number").raw_input) == 0
):
raise ValidationError("A Field is missing")
else:
raise ValidationError("No phone number provided")
class Meta:
model = MembershipPerson
fields = ["first_name", "last_name", "phone_number", "email"]
class CommitteeForm(ModelForm):
block_captain = forms.BooleanField(
label="I can serve as a Block Captain (distribute newsletters & directories)",
required=False,
)
coordinator = forms.BooleanField(
label="I can serve as a Coordinator, SCHA Board Member Position (oversee & organize block captains)",
required=False,
)
egg_hunt = forms.BooleanField(label="Easter Egg Hunt (late March)", required=False)
spring_garage_sale = forms.BooleanField(
label="Spring Garage Sale (May/June)", required=False
)
golf_outing = forms.BooleanField(label="Golf Outing (Summer)", required=False)
ice_cream_social = forms.BooleanField(
label="Ice Creame Social (August)", required=False
)
fall_garage_sale = forms.BooleanField(
label="Fall Garage Sale (September/October)", required=False
)
halloween_party = forms.BooleanField(
label="Halloween Party (October)", required=False
)
santa_visit = forms.BooleanField(label="Santa Visits (December)", required=False)
website = forms.BooleanField(
label="SCHA Newsletter/Website (wite articles, edit, report, etc)",
required=False,
)
civic_affair = forms.BooleanField(
label="Civic Affairs Journalist (report on school board/city council mtgs)",
required=False,
)
phone_directory = forms.BooleanField(
label="Annual Phone Directory (Help compile, edit, produce our Annual Neighborhood Directory)",
required=False,
)
no_preference = forms.BooleanField(
label="No Preference. I want to help in some way . Please email me.",
required=False,
)
class Meta:
model = MembershipCommittee
fields = [
"block_captain",
"coordinator",
"egg_hunt",
"spring_garage_sale",
"golf_outing",
"ice_cream_social",
"fall_garage_sale",
"halloween_party",
"santa_visit",
"website",
"civic_affair",
"phone_directory",
"no_preference",
]
class ServicesForm(ModelForm):
babysitting = forms.BooleanField(label="Babysitting", required=False)
lawn_mowing = forms.BooleanField(label="Lawn Mowing", required=False)
snow_shoveling = forms.BooleanField(label="Snow Shoveling", required=False)
leaf_raking = forms.BooleanField(label="Leaf Raking", required=False)
petsitting = forms.BooleanField(label="Petsitting", required=False)
house_sitting = forms.BooleanField(label="Housesitting", required=False)
other = forms.BooleanField(label="Other", required=False)
class Meta:
model = MembershipServices
fields = [
"babysitting",
"lawn_mowing",
"snow_shoveling",
"leaf_raking",
"petsitting",
"house_sitting",
"other",
"other_desc",
]
class PaymentImport(ModelForm):
pass