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