django_program.manage.forms¶
Model forms for the conference management dashboard.
Each form that wraps a pretalx-synced model accepts an is_synced flag.
When the record has been synced from Pretalx (synced_at is not None),
all fields are rendered as disabled so organizers cannot accidentally
overwrite upstream data.
Classes
Form for editing a conference activity. |
|
Form for creating and editing add-ons. |
|
Form for editing conference details. |
|
Form for marking a travel grant as disbursed. |
|
Form for importing a new conference from a Pretalx event slug. |
|
Form for organizers to record a manual payment against an order. |
|
Form for flagging a receipt with a reason. |
|
Form for reviewers to send a message on a travel grant. |
|
Form for editing a room. |
|
Form for editing a schedule slot. |
|
Form for editing a conference section. |
|
Form for editing a sponsor. |
|
Form for editing a sponsor level. |
|
Form for editing a talk. |
|
Form for creating and editing ticket types. |
|
Form for reviewing a travel grant application. |
|
Form for creating and editing vouchers. |
- class django_program.manage.forms.ImportFromPretalxForm[source]¶
Bases:
FormForm for importing a new conference from a Pretalx event slug.
Accepts a Pretalx event slug and optional conference slug override. The event slug is used to fetch event metadata from the Pretalx API and bootstrap a new Conference object with a full data sync.
- base_fields = {'api_token': <django.forms.fields.CharField object>, 'conference_slug': <django.forms.fields.SlugField object>, 'pretalx_event_slug': <django.forms.fields.CharField object>}¶
- declared_fields = {'api_token': <django.forms.fields.CharField object>, 'conference_slug': <django.forms.fields.SlugField object>, 'pretalx_event_slug': <django.forms.fields.CharField object>}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.ConferenceForm[source]¶
Bases:
ModelFormForm for editing conference details.
Stripe secret keys are excluded for security, along with auto-managed timestamp fields. The slug is excluded because it serves as the URL identifier and should not be casually changed.
- class Meta[source]¶
Bases:
object- model¶
alias of
Conference
- fields = ['name', 'start_date', 'end_date', 'timezone', 'venue', 'address', 'website_url', 'pretalx_event_slug', 'total_capacity', 'is_active']¶
- widgets = {'end_date': <django.forms.widgets.DateInput object>, 'start_date': <django.forms.widgets.DateInput object>}¶
- base_fields = {'address': <django.forms.fields.CharField object>, 'end_date': <django.forms.fields.DateField object>, 'is_active': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>, 'pretalx_event_slug': <django.forms.fields.CharField object>, 'start_date': <django.forms.fields.DateField object>, 'timezone': <django.forms.fields.CharField object>, 'total_capacity': <django.forms.fields.IntegerField object>, 'venue': <django.forms.fields.CharField object>, 'website_url': <django.forms.fields.URLField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.SectionForm[source]¶
Bases:
ModelFormForm for editing a conference section.
- Parameters:
args (
object)conference (
Conference|None)kwargs (
object)
- class Meta[source]¶
Bases:
object- fields = ['name', 'start_date', 'end_date', 'order']¶
- widgets = {'end_date': <django.forms.widgets.DateInput object>, 'start_date': <django.forms.widgets.DateInput object>}¶
- __init__(*args, conference=None, **kwargs)[source]¶
Build date select choices from the conference date range.
- Parameters:
args (
object)conference (
Conference|None)kwargs (
object)
- base_fields = {'end_date': <django.forms.fields.DateField object>, 'name': <django.forms.fields.CharField object>, 'order': <django.forms.fields.IntegerField object>, 'start_date': <django.forms.fields.DateField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.RoomForm[source]¶
Bases:
ModelFormForm for editing a room.
When the room has been synced from Pretalx, all fields are disabled to prevent overwriting upstream data.
- base_fields = {'capacity': <django.forms.fields.IntegerField object>, 'description': <django.forms.fields.CharField object>, 'name': <django.forms.fields.CharField object>, 'position': <django.forms.fields.IntegerField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.TalkForm[source]¶
Bases:
ModelFormForm for editing a talk.
Pretalx-synced fields are disabled when the record was last synced from the upstream API.
- SYNCED_FIELDS: list[str] = ['pretalx_code', 'title', 'abstract', 'description', 'submission_type', 'track', 'duration', 'state', 'speakers', 'room', 'slot_start', 'slot_end']¶
- class Meta[source]¶
Bases:
object- fields = ['pretalx_code', 'title', 'abstract', 'description', 'submission_type', 'track', 'duration', 'state', 'speakers', 'room', 'slot_start', 'slot_end']¶
- __init__(*args, **kwargs)[source]¶
Initialise the form and disable synced fields when locked by Pretalx.
- base_fields = {'abstract': <django.forms.fields.CharField object>, 'description': <django.forms.fields.CharField object>, 'duration': <django.forms.fields.IntegerField object>, 'pretalx_code': <django.forms.fields.CharField object>, 'room': <django.forms.models.ModelChoiceField object>, 'slot_end': <django.forms.fields.DateTimeField object>, 'slot_start': <django.forms.fields.DateTimeField object>, 'speakers': <django.forms.models.ModelMultipleChoiceField object>, 'state': <django.forms.fields.CharField object>, 'submission_type': <django.forms.fields.CharField object>, 'title': <django.forms.fields.CharField object>, 'track': <django.forms.fields.CharField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.ScheduleSlotForm[source]¶
Bases:
ModelFormForm for editing a schedule slot.
Pretalx-synced fields are disabled when the slot has been synced from the upstream Pretalx API.
- class Meta[source]¶
Bases:
object- model¶
alias of
ScheduleSlot
- fields = ['talk', 'title', 'room', 'start', 'end', 'slot_type']¶
- __init__(*args, **kwargs)[source]¶
Initialise the form and disable synced fields when locked by Pretalx.
- base_fields = {'end': <django.forms.fields.DateTimeField object>, 'room': <django.forms.models.ModelChoiceField object>, 'slot_type': <django.forms.fields.TypedChoiceField object>, 'start': <django.forms.fields.DateTimeField object>, 'talk': <django.forms.models.ModelChoiceField object>, 'title': <django.forms.fields.CharField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.SponsorLevelForm[source]¶
Bases:
ModelFormForm for editing a sponsor level.
- class Meta[source]¶
Bases:
object- model¶
alias of
SponsorLevel
- fields = ['name', 'cost', 'description', 'benefits_summary', 'comp_ticket_count', 'order']¶
- base_fields = {'benefits_summary': <django.forms.fields.CharField object>, 'comp_ticket_count': <django.forms.fields.IntegerField object>, 'cost': <django.forms.fields.DecimalField object>, 'description': <django.forms.fields.CharField object>, 'name': <django.forms.fields.CharField object>, 'order': <django.forms.fields.IntegerField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.SponsorForm[source]¶
Bases:
ModelFormForm for editing a sponsor.
When the sponsor has an
external_id(synced from the PSF API), fields that come from the upstream API are disabled to prevent overwriting synced data.- class Meta[source]¶
Bases:
object- fields = ['name', 'level', 'website_url', 'logo', 'logo_url', 'description', 'contact_name', 'contact_email', 'is_active']¶
- __init__(*args, **kwargs)[source]¶
Initialise the form and disable synced fields when locked by PSF sync.
- base_fields = {'contact_email': <django.forms.fields.EmailField object>, 'contact_name': <django.forms.fields.CharField object>, 'description': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'level': <django.forms.models.ModelChoiceField object>, 'logo': <django.forms.fields.ImageField object>, 'logo_url': <django.forms.fields.URLField object>, 'name': <django.forms.fields.CharField object>, 'website_url': <django.forms.fields.URLField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.ActivityForm[source]¶
Bases:
ModelFormForm for editing a conference activity.
The
slugfield is excluded because it is auto-generated from the activity name. Theroomfield provides an optional link to a Pretalx-synced room for venue assignment.- class Meta[source]¶
Bases:
object- fields = ['name', 'activity_type', 'description', 'room', 'location', 'pretalx_submission_type', 'start_time', 'end_time', 'max_participants', 'requires_ticket', 'external_url', 'is_active', 'organizers']¶
- widgets = {'end_time': <django.forms.widgets.DateTimeInput object>, 'organizers': <class 'django.forms.widgets.CheckboxSelectMultiple'>, 'start_time': <django.forms.widgets.DateTimeInput object>}¶
- base_fields = {'activity_type': <django.forms.fields.TypedChoiceField object>, 'description': <django.forms.fields.CharField object>, 'end_time': <django.forms.fields.DateTimeField object>, 'external_url': <django.forms.fields.URLField object>, 'is_active': <django.forms.fields.BooleanField object>, 'location': <django.forms.fields.CharField object>, 'max_participants': <django.forms.fields.IntegerField object>, 'name': <django.forms.fields.CharField object>, 'organizers': <django.forms.models.ModelMultipleChoiceField object>, 'pretalx_submission_type': <django.forms.fields.CharField object>, 'requires_ticket': <django.forms.fields.BooleanField object>, 'room': <django.forms.models.ModelChoiceField object>, 'start_time': <django.forms.fields.DateTimeField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.TravelGrantForm[source]¶
Bases:
ModelFormForm for reviewing a travel grant application.
- class Meta[source]¶
Bases:
object- model¶
alias of
TravelGrant
- fields = ['status', 'approved_amount', 'promo_code', 'reviewer_notes']¶
- widgets = {'status': <django.forms.widgets.Select object>}¶
- base_fields = {'approved_amount': <django.forms.fields.DecimalField object>, 'promo_code': <django.forms.fields.CharField object>, 'reviewer_notes': <django.forms.fields.CharField object>, 'status': <django.forms.fields.TypedChoiceField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.ReviewerMessageForm[source]¶
Bases:
ModelFormForm for reviewers to send a message on a travel grant.
- class Meta[source]¶
Bases:
object- model¶
alias of
TravelGrantMessage
- fields = ['message', 'visible']¶
- widgets = {'message': <django.forms.widgets.Textarea object>}¶
- labels = {'visible': 'Visible to applicant'}¶
- base_fields = {'message': <django.forms.fields.CharField object>, 'visible': <django.forms.fields.BooleanField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.ReceiptFlagForm[source]¶
Bases:
FormForm for flagging a receipt with a reason.
- base_fields = {'reason': <django.forms.fields.CharField object>}¶
- declared_fields = {'reason': <django.forms.fields.CharField object>}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.DisbursementForm[source]¶
Bases:
FormForm for marking a travel grant as disbursed.
- base_fields = {'disbursed_amount': <django.forms.fields.DecimalField object>}¶
- declared_fields = {'disbursed_amount': <django.forms.fields.DecimalField object>}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.TicketTypeForm[source]¶
Bases:
ModelFormForm for creating and editing ticket types.
Provides datetime-local widgets for availability windows and auto-populates the slug from the ticket name on creation.
- class Meta[source]¶
Bases:
object- model¶
alias of
TicketType
- fields = ['name', 'slug', 'description', 'price', 'available_from', 'available_until', 'total_quantity', 'limit_per_user', 'requires_voucher', 'is_active', 'order']¶
- widgets = {'available_from': <django.forms.widgets.DateTimeInput object>, 'available_until': <django.forms.widgets.DateTimeInput object>, 'description': <django.forms.widgets.Textarea object>}¶
- base_fields = {'available_from': <django.forms.fields.DateTimeField object>, 'available_until': <django.forms.fields.DateTimeField object>, 'description': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'limit_per_user': <django.forms.fields.IntegerField object>, 'name': <django.forms.fields.CharField object>, 'order': <django.forms.fields.IntegerField object>, 'price': <django.forms.fields.DecimalField object>, 'requires_voucher': <django.forms.fields.BooleanField object>, 'slug': <django.forms.fields.SlugField object>, 'total_quantity': <django.forms.fields.IntegerField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.AddOnForm[source]¶
Bases:
ModelFormForm for creating and editing add-ons.
Provides datetime-local widgets for availability windows.
- class Meta[source]¶
Bases:
object- fields = ['name', 'slug', 'description', 'price', 'available_from', 'available_until', 'total_quantity', 'is_active', 'order']¶
- widgets = {'available_from': <django.forms.widgets.DateTimeInput object>, 'available_until': <django.forms.widgets.DateTimeInput object>, 'description': <django.forms.widgets.Textarea object>}¶
- base_fields = {'available_from': <django.forms.fields.DateTimeField object>, 'available_until': <django.forms.fields.DateTimeField object>, 'description': <django.forms.fields.CharField object>, 'is_active': <django.forms.fields.BooleanField object>, 'name': <django.forms.fields.CharField object>, 'order': <django.forms.fields.IntegerField object>, 'price': <django.forms.fields.DecimalField object>, 'slug': <django.forms.fields.SlugField object>, 'total_quantity': <django.forms.fields.IntegerField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.VoucherForm[source]¶
Bases:
ModelFormForm for creating and editing vouchers.
Uses checkbox widgets for the many-to-many ticket type and add-on fields so organizers can quickly select applicable items.
- class Meta[source]¶
Bases:
object- fields = ['code', 'voucher_type', 'discount_value', 'max_uses', 'valid_from', 'valid_until', 'unlocks_hidden_tickets', 'is_active', 'applicable_ticket_types', 'applicable_addons']¶
- widgets = {'applicable_addons': <class 'django.forms.widgets.CheckboxSelectMultiple'>, 'applicable_ticket_types': <class 'django.forms.widgets.CheckboxSelectMultiple'>, 'valid_from': <django.forms.widgets.DateTimeInput object>, 'valid_until': <django.forms.widgets.DateTimeInput object>}¶
- base_fields = {'applicable_addons': <django.forms.models.ModelMultipleChoiceField object>, 'applicable_ticket_types': <django.forms.models.ModelMultipleChoiceField object>, 'code': <django.forms.fields.CharField object>, 'discount_value': <django.forms.fields.DecimalField object>, 'is_active': <django.forms.fields.BooleanField object>, 'max_uses': <django.forms.fields.IntegerField object>, 'unlocks_hidden_tickets': <django.forms.fields.BooleanField object>, 'valid_from': <django.forms.fields.DateTimeField object>, 'valid_until': <django.forms.fields.DateTimeField object>, 'voucher_type': <django.forms.fields.TypedChoiceField object>}¶
- declared_fields = {}¶
- property media¶
Return all media required to render the widgets on this form.
- class django_program.manage.forms.ManualPaymentForm[source]¶
Bases:
FormForm for organizers to record a manual payment against an order.
Supports comp, credit, and manual payment methods. The note field allows attaching context (e.g. check number, approval reference).
- base_fields = {'amount': <django.forms.fields.DecimalField object>, 'method': <django.forms.fields.ChoiceField object>, 'note': <django.forms.fields.CharField object>}¶
- declared_fields = {'amount': <django.forms.fields.DecimalField object>, 'method': <django.forms.fields.ChoiceField object>, 'note': <django.forms.fields.CharField object>}¶
- property media¶
Return all media required to render the widgets on this form.