django_program.programs.forms¶
Forms for the programs app.
Classes
Form for submitting payment details for reimbursement. |
|
Form for uploading an expense receipt. |
|
Public-facing form for applying for a travel grant. |
|
Form for applicants to send a message on their grant. |
- class django_program.programs.forms.TravelGrantApplicationForm[source]¶
Bases:
ModelFormPublic-facing form for applying for a travel grant.
Mirrors PyCon US’s travel grant application flow. Collects request type, travel plan breakdowns (airfare + lodging), applicant profile, and community involvement. The
conferenceanduserfields are set by the view, not the form.- Parameters:
args (
object)conference (
Conference|None)kwargs (
object)
- class Meta[source]¶
Bases:
object- model¶
alias of
TravelGrant
- fields = ['request_type', 'application_type', 'travel_from', 'international', 'first_time', 'days_attending', 'travel_plans_airfare_description', 'travel_plans_airfare_amount', 'travel_plans_lodging_description', 'travel_plans_lodging_amount', 'requested_amount', 'sharing_expenses', 'traveling_with', 'experience_level', 'occupation', 'involvement', 'reason']¶
- widgets = {'application_type': <class 'django.forms.widgets.Select'>, 'experience_level': <class 'django.forms.widgets.Select'>, 'first_time': <django.forms.widgets.Select object>, 'international': <class 'django.forms.widgets.CheckboxInput'>, 'involvement': <django.forms.widgets.Textarea object>, 'occupation': <django.forms.widgets.Textarea object>, 'reason': <django.forms.widgets.Textarea object>, 'request_type': <class 'django.forms.widgets.RadioSelect'>, 'requested_amount': <django.forms.widgets.NumberInput object>, 'sharing_expenses': <class 'django.forms.widgets.CheckboxInput'>, 'travel_plans_airfare_amount': <django.forms.widgets.NumberInput object>, 'travel_plans_airfare_description': <django.forms.widgets.TextInput object>, 'travel_plans_lodging_amount': <django.forms.widgets.NumberInput object>, 'travel_plans_lodging_description': <django.forms.widgets.TextInput object>, 'traveling_with': <django.forms.widgets.Textarea object>}¶
- labels = {'application_type': 'Application type', 'days_attending': 'Which days do you plan to attend?', 'experience_level': 'Python experience level', 'first_time': 'First time attending this conference?', 'international': 'International travel', 'involvement': 'Community involvement', 'occupation': 'Current occupation or situation', 'reason': 'Why do you need a travel grant?', 'request_type': 'What are you requesting?', 'requested_amount': 'Total amount requested (USD)', 'sharing_expenses': 'Sharing travel expenses with another applicant?', 'travel_from': 'Traveling from', 'travel_plans_airfare_amount': 'Airfare amount (USD)', 'travel_plans_airfare_description': 'Airfare details', 'travel_plans_lodging_amount': 'Lodging amount (USD)', 'travel_plans_lodging_description': 'Lodging details', 'traveling_with': 'Who are you traveling with?'}¶
- __init__(*args, conference=None, **kwargs)[source]¶
Set required fields, placeholders, and dynamic day choices.
- Parameters:
args (
object)conference (
Conference|None)kwargs (
object)
- clean_days_attending()[source]¶
Serialize checkbox selections to comma-separated string for storage.
- Return type:
- base_fields = {'application_type': <django.forms.fields.TypedChoiceField object>, 'days_attending': <django.forms.fields.MultipleChoiceField object>, 'experience_level': <django.forms.fields.TypedChoiceField object>, 'first_time': <django.forms.fields.NullBooleanField object>, 'international': <django.forms.fields.BooleanField object>, 'involvement': <django.forms.fields.CharField object>, 'occupation': <django.forms.fields.CharField object>, 'reason': <django.forms.fields.CharField object>, 'request_type': <django.forms.fields.TypedChoiceField object>, 'requested_amount': <django.forms.fields.DecimalField object>, 'sharing_expenses': <django.forms.fields.BooleanField object>, 'travel_from': <django.forms.fields.CharField object>, 'travel_plans_airfare_amount': <django.forms.fields.DecimalField object>, 'travel_plans_airfare_description': <django.forms.fields.CharField object>, 'travel_plans_lodging_amount': <django.forms.fields.DecimalField object>, 'travel_plans_lodging_description': <django.forms.fields.CharField object>, 'traveling_with': <django.forms.fields.CharField object>}¶
- declared_fields = {'days_attending': <django.forms.fields.MultipleChoiceField object>}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.programs.forms.TravelGrantMessageForm[source]¶
Bases:
ModelFormForm for applicants to send a message on their grant.
- class Meta[source]¶
Bases:
object- model¶
alias of
TravelGrantMessage
- fields = ['message']¶
- widgets = {'message': <django.forms.widgets.Textarea object>}¶
- base_fields = {'message': <django.forms.fields.CharField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.programs.forms.ReceiptForm[source]¶
Bases:
ModelFormForm for uploading an expense receipt.
- class Meta[source]¶
Bases:
object- fields = ['receipt_type', 'date', 'amount', 'description', 'receipt_file']¶
- widgets = {'amount': <django.forms.widgets.NumberInput object>, 'date': <django.forms.widgets.DateInput object>, 'description': <django.forms.widgets.TextInput object>}¶
- base_fields = {'amount': <django.forms.fields.DecimalField object>, 'date': <django.forms.fields.DateField object>, 'description': <django.forms.fields.CharField object>, 'receipt_file': <django.forms.fields.FileField object>, 'receipt_type': <django.forms.fields.TypedChoiceField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.programs.forms.PaymentInfoForm[source]¶
Bases:
ModelFormForm for submitting payment details for reimbursement.
- class Meta[source]¶
Bases:
object- model¶
alias of
PaymentInfo
- fields = ['payment_method', 'legal_name', 'address_street', 'address_city', 'address_state', 'address_zip', 'address_country', 'paypal_email', 'zelle_email', 'wise_email', 'bank_name', 'bank_account_number', 'bank_routing_number', 'bank_holder_name', 'bank_holder_address', 'bank_address', 'bank_additional']¶
- widgets = {'bank_additional': <django.forms.widgets.Textarea object>, 'bank_address': <django.forms.widgets.Textarea object>, 'bank_holder_address': <django.forms.widgets.Textarea object>}¶
- base_fields = {'address_city': <django.forms.fields.CharField object>, 'address_country': <django.forms.fields.CharField object>, 'address_state': <django.forms.fields.CharField object>, 'address_street': <django.forms.fields.CharField object>, 'address_zip': <django.forms.fields.CharField object>, 'bank_account_number': <django.forms.fields.CharField object>, 'bank_additional': <django.forms.fields.CharField object>, 'bank_address': <django.forms.fields.CharField object>, 'bank_holder_address': <django.forms.fields.CharField object>, 'bank_holder_name': <django.forms.fields.CharField object>, 'bank_name': <django.forms.fields.CharField object>, 'bank_routing_number': <django.forms.fields.CharField object>, 'legal_name': <django.forms.fields.CharField object>, 'payment_method': <django.forms.fields.TypedChoiceField object>, 'paypal_email': <django.forms.fields.CharField object>, 'wise_email': <django.forms.fields.CharField object>, 'zelle_email': <django.forms.fields.CharField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.