django_program.manage.views¶
Views for the conference management dashboard.
Provides permission-gated CRUD views for conference organizers and
superadmins. All conference-scoped views inherit from
ManagePermissionMixin which resolves the conference from the URL
and enforces access control.
Classes
Create a new activity. |
|
Export activity signups as CSV. |
|
Attendee list and signup management for a single activity. |
|
Edit an activity. |
|
List activities for the current conference. |
|
Permission mixin for per-activity organizer views. |
|
Promote a waitlisted signup to confirmed. |
|
Create a new add-on for the current conference. |
|
Edit an add-on belonging to the current conference. |
|
List add-ons for the current conference. |
|
Edit conference details. |
|
List all conferences visible to the current user. |
|
Conference dashboard with summary statistics. |
|
Import a new conference by fetching event metadata from Pretalx. |
|
Stream Pretalx import progress via Server-Sent Events. |
|
Permission mixin for conference-scoped management views. |
|
POST-only view to record a manual payment against an order. |
|
Display full order details with line items and payments. |
|
List orders for the current conference. |
|
JSON API endpoint for Pretalx event autocomplete. |
|
POST-only view to approve a receipt. |
|
POST-only view to flag a receipt. |
|
Display a receipt for review with approve/flag controls. |
|
Pick a random pending receipt for review. |
|
Create a new room for the current conference. |
|
Edit a room belonging to the current conference. |
|
List rooms for the current conference, ordered by position. |
|
JSON API endpoint for room autocomplete within a conference. |
|
Edit a schedule slot belonging to the current conference. |
|
List schedule slots for the current conference, grouped by date. |
|
Create a new section for the current conference. |
|
Edit a section belonging to the current conference. |
|
List sections for the current conference. |
|
Read-only detail view for a speaker in the current conference. |
|
List speakers for the current conference. |
|
Create a new sponsor. |
|
Edit a sponsor. |
|
Create a new sponsor level. |
|
Edit a sponsor level. |
|
List sponsor levels for the current conference. |
|
List sponsors for the current conference. |
|
Stream Pretalx sync progress via Server-Sent Events. |
|
Trigger a Pretalx sync for the current conference. |
|
Trigger a PSF sponsor sync for the current conference. |
|
Read-only detail view for a talk in the current conference. |
|
Edit a talk belonging to the current conference. |
|
List talks for the current conference. |
|
Create a new ticket type for the current conference. |
|
Edit a ticket type belonging to the current conference. |
|
List ticket types for the current conference. |
|
Mark a travel grant as disbursed. |
|
List travel grant applications for the current conference. |
|
Review a travel grant application. |
|
POST-only view for reviewers to send a message on a grant. |
|
Create a new voucher for the current conference. |
|
Edit a voucher belonging to the current conference. |
|
List vouchers for the current conference. |
- class django_program.manage.views.ManagePermissionMixin[source]¶
Bases:
LoginRequiredMixinPermission mixin for conference-scoped management views.
Resolves the conference from the
conference_slugURL kwarg and checks that the authenticated user is a superuser or holds theprogram_conference.change_conferencepermission. Stores the resolved conference onself.conferenceand injects it into the template context.- Raises:
PermissionDenied – If the user lacks the required permission.
- conference: Conference¶
- dispatch(request, *args, **kwargs)[source]¶
Resolve the conference and enforce permissions before dispatch.
The conference is resolved and permissions checked after the
LoginRequiredMixinverifies authentication but before the view logic executes. If the user is not authenticated,LoginRequiredMixinhandles the redirect and we skip conference resolution entirely.- Parameters:
- Return type:
HttpResponse- Returns:
The HTTP response from the downstream view.
- Raises:
PermissionDenied – If the user is not authorized.
- class django_program.manage.views.ConferenceListView[source]¶
Bases:
LoginRequiredMixin,ListViewList all conferences visible to the current user.
Superusers see every conference. Staff users see all active conferences. Other authenticated users are denied access.
- template_name = 'django_program/manage/conference_list.html'¶
- context_object_name = 'conferences'¶
- paginate_by = 25¶
- class django_program.manage.views.ImportFromPretalxView[source]¶
Bases:
LoginRequiredMixin,TemplateViewImport a new conference by fetching event metadata from Pretalx.
Presents a form to enter a Pretalx event slug. On POST, fetches event metadata from the Pretalx API, creates a Conference object, and runs a full sync of rooms, speakers, talks, and schedule.
- template_name = 'django_program/manage/import_pretalx.html'¶
- post(request, **kwargs)[source]¶
Handle the import form submission.
Fetches event metadata from Pretalx, creates the Conference, and runs a full sync.
- Parameters:
request (
HttpRequest) – The incoming HTTP request.**kwargs (
str) – URL keyword arguments (unused).
- Return type:
HttpResponse- Returns:
A redirect to the new conference dashboard on success, or re-renders the form with errors.
- class django_program.manage.views.ImportPretalxStreamView[source]¶
Bases:
LoginRequiredMixin,ViewStream Pretalx import progress via Server-Sent Events.
Returns a
StreamingHttpResponsewithtext/event-streamcontent type. Each import step (fetch metadata, create conference, sync rooms, speakers, talks, schedule) emits an SSE event so the client can render a live progress bar.
- class django_program.manage.views.DashboardView[source]¶
Bases:
ManagePermissionMixin,TemplateViewConference dashboard with summary statistics.
Displays counts of rooms, speakers, talks, schedule slots, and sections for the selected conference.
- template_name = 'django_program/manage/dashboard.html'¶
- class django_program.manage.views.ConferenceEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit conference details.
Stripe keys are excluded from the form for security. On success the user is redirected back to the dashboard with a flash message.
- template_name = 'django_program/manage/conference_edit.html'¶
- form_class¶
alias of
ConferenceForm
- context_object_name = 'conference'¶
- get_object(queryset=None)[source]¶
Return the conference resolved by the mixin.
- Return type:
- Returns:
The current conference instance.
- Parameters:
- get_success_url()[source]¶
Redirect to the conference dashboard after a successful save.
- Return type:
- Returns:
URL of the conference dashboard.
- form_valid(form)[source]¶
Save the form and add a success message.
- Parameters:
form (
ConferenceForm) – The validated conference form.- Return type:
HttpResponse- Returns:
A redirect response to the success URL.
- class django_program.manage.views.SectionListView[source]¶
Bases:
ManagePermissionMixin,ListViewList sections for the current conference.
- template_name = 'django_program/manage/section_list.html'¶
- context_object_name = 'sections'¶
- paginate_by = 50¶
- class django_program.manage.views.SectionEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit a section belonging to the current conference.
- template_name = 'django_program/manage/section_edit.html'¶
- form_class¶
alias of
SectionForm
- context_object_name = 'section'¶
- get_queryset()[source]¶
Scope the queryset to the current conference.
- Return type:
- Returns:
A queryset of Section instances for this conference.
- get_success_url()[source]¶
Redirect to the section list after a successful save.
- Return type:
- Returns:
URL of the section list view.
- form_valid(form)[source]¶
Re-generate slug from name and save.
- Parameters:
form (
SectionForm)- Return type:
HttpResponse
- class django_program.manage.views.SectionCreateView[source]¶
Bases:
ManagePermissionMixin,CreateViewCreate a new section for the current conference.
- template_name = 'django_program/manage/section_edit.html'¶
- form_class¶
alias of
SectionForm
- form_valid(form)[source]¶
Assign the conference and auto-generate slug before saving.
- Parameters:
form (
SectionForm)- Return type:
HttpResponse
- class django_program.manage.views.RoomListView[source]¶
Bases:
ManagePermissionMixin,ListViewList rooms for the current conference, ordered by position.
- template_name = 'django_program/manage/room_list.html'¶
- context_object_name = 'rooms'¶
- paginate_by = 50¶
- class django_program.manage.views.RoomEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit a room belonging to the current conference.
Fields synced from Pretalx are disabled when the room has a
synced_attimestamp.- template_name = 'django_program/manage/room_edit.html'¶
- context_object_name = 'room'¶
- get_queryset()[source]¶
Scope the queryset to the current conference.
- Return type:
- Returns:
A queryset of Room instances for this conference.
- class django_program.manage.views.RoomCreateView[source]¶
Bases:
ManagePermissionMixin,CreateViewCreate a new room for the current conference.
- template_name = 'django_program/manage/room_edit.html'¶
- class django_program.manage.views.SpeakerListView[source]¶
Bases:
ManagePermissionMixin,ListViewList speakers for the current conference.
Supports search via the
qGET parameter, filtering by name or email. This is a read-only view since speaker data comes from Pretalx.- template_name = 'django_program/manage/speaker_list.html'¶
- context_object_name = 'speakers'¶
- paginate_by = 50¶
- class django_program.manage.views.SpeakerDetailView[source]¶
Bases:
ManagePermissionMixin,DetailViewRead-only detail view for a speaker in the current conference.
- template_name = 'django_program/manage/speaker_detail.html'¶
- context_object_name = 'speaker'¶
- class django_program.manage.views.TalkListView[source]¶
Bases:
ManagePermissionMixin,ListViewList talks for the current conference.
Supports search via
q(title search), filtering viastateGET parameter, and filtering by submission type via URL slug.- template_name = 'django_program/manage/talk_list.html'¶
- context_object_name = 'talks'¶
- paginate_by = 50¶
- class django_program.manage.views.TalkDetailView[source]¶
Bases:
ManagePermissionMixin,DetailViewRead-only detail view for a talk in the current conference.
- template_name = 'django_program/manage/talk_detail.html'¶
- context_object_name = 'talk'¶
- class django_program.manage.views.TalkEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit a talk belonging to the current conference.
Pretalx-synced fields are disabled when the talk has a
synced_attimestamp.- template_name = 'django_program/manage/talk_edit.html'¶
- context_object_name = 'talk'¶
- get_queryset()[source]¶
Scope the queryset to the current conference.
- Return type:
- Returns:
A queryset of Talk instances for this conference.
- class django_program.manage.views.ScheduleSlotListView[source]¶
Bases:
ManagePermissionMixin,ListViewList schedule slots for the current conference, grouped by date.
- template_name = 'django_program/manage/schedule_list.html'¶
- context_object_name = 'slots'¶
- paginate_by = 200¶
- class django_program.manage.views.ScheduleSlotEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit a schedule slot belonging to the current conference.
Pretalx-synced fields are disabled when the slot has a
synced_attimestamp.- template_name = 'django_program/manage/slot_edit.html'¶
- form_class¶
alias of
ScheduleSlotForm
- context_object_name = 'slot'¶
- get_queryset()[source]¶
Scope the queryset to the current conference.
- Return type:
- Returns:
A queryset of ScheduleSlot instances for this conference.
- get_success_url()[source]¶
Redirect to the schedule list after a successful save.
- Return type:
- Returns:
URL of the schedule list view.
- form_valid(form)[source]¶
Save the form and add a success message.
- Parameters:
form (
ScheduleSlotForm) – The validated schedule slot form.- Return type:
HttpResponse- Returns:
A redirect response to the success URL.
- class django_program.manage.views.SponsorLevelListView[source]¶
Bases:
ManagePermissionMixin,ListViewList sponsor levels for the current conference.
- template_name = 'django_program/manage/sponsor_level_list.html'¶
- context_object_name = 'levels'¶
- paginate_by = 50¶
- class django_program.manage.views.SponsorLevelEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit a sponsor level.
- template_name = 'django_program/manage/sponsor_level_edit.html'¶
- form_class¶
alias of
SponsorLevelForm
- context_object_name = 'level'¶
- form_valid(form)[source]¶
Save and flash success.
- Parameters:
form (
SponsorLevelForm)- Return type:
HttpResponse
- class django_program.manage.views.SponsorLevelCreateView[source]¶
Bases:
ManagePermissionMixin,CreateViewCreate a new sponsor level.
- template_name = 'django_program/manage/sponsor_level_edit.html'¶
- form_class¶
alias of
SponsorLevelForm
- form_valid(form)[source]¶
Assign the conference before saving.
- Parameters:
form (
SponsorLevelForm)- Return type:
HttpResponse
- class django_program.manage.views.SponsorManageListView[source]¶
Bases:
ManagePermissionMixin,ListViewList sponsors for the current conference.
- template_name = 'django_program/manage/sponsor_list.html'¶
- context_object_name = 'sponsors'¶
- paginate_by = 50¶
- class django_program.manage.views.SponsorEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit a sponsor.
Fields synced from the PSF API are disabled when the sponsor has an
external_id.- template_name = 'django_program/manage/sponsor_edit.html'¶
- form_class¶
alias of
SponsorForm
- context_object_name = 'sponsor'¶
- get_context_data(**kwargs)[source]¶
Add
active_nav, sync status, and benefits to the template context.
- get_form(form_class=None)[source]¶
Scope the level queryset to the current conference.
- Parameters:
form_class (
type[SponsorForm] |None)- Return type:
- form_valid(form)[source]¶
Save and flash success.
- Parameters:
form (
SponsorForm)- Return type:
HttpResponse
- class django_program.manage.views.SponsorCreateView[source]¶
Bases:
ManagePermissionMixin,CreateViewCreate a new sponsor.
- template_name = 'django_program/manage/sponsor_edit.html'¶
- form_class¶
alias of
SponsorForm
- get_form(form_class=None)[source]¶
Scope the level queryset to the current conference.
- Parameters:
form_class (
type[SponsorForm] |None)- Return type:
- form_valid(form)[source]¶
Assign the conference before saving.
- Parameters:
form (
SponsorForm)- Return type:
HttpResponse
- class django_program.manage.views.ActivityManageListView[source]¶
Bases:
ManagePermissionMixin,ListViewList activities for the current conference.
- template_name = 'django_program/manage/activity_list.html'¶
- context_object_name = 'activities'¶
- paginate_by = 50¶
- class django_program.manage.views.ActivityEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit an activity.
- template_name = 'django_program/manage/activity_edit.html'¶
- form_class¶
alias of
ActivityForm
- context_object_name = 'activity'¶
- get_form(form_class=None)[source]¶
Scope the room queryset to the current conference.
- Parameters:
form_class (
type[ActivityForm] |None)- Return type:
- form_valid(form)[source]¶
Re-generate slug from name and save.
- Parameters:
form (
ActivityForm)- Return type:
HttpResponse
- class django_program.manage.views.ActivityCreateView[source]¶
Bases:
ManagePermissionMixin,CreateViewCreate a new activity.
- template_name = 'django_program/manage/activity_edit.html'¶
- form_class¶
alias of
ActivityForm
- get_form(form_class=None)[source]¶
Scope the room queryset to the current conference.
- Parameters:
form_class (
type[ActivityForm] |None)- Return type:
- form_valid(form)[source]¶
Assign the conference and auto-generate slug before saving.
- Parameters:
form (
ActivityForm)- Return type:
HttpResponse
- class django_program.manage.views.ActivityOrganizerMixin[source]¶
Bases:
LoginRequiredMixinPermission mixin for per-activity organizer views.
Grants access if the user is a superuser, holds the global
change_conferencepermission, holds themanage_activitypermission, or is listed in the activity’sorganizersM2M.- conference: Conference¶
- class django_program.manage.views.ActivityDashboardView[source]¶
Bases:
ActivityOrganizerMixin,ListViewAttendee list and signup management for a single activity.
- template_name = 'django_program/manage/activity_dashboard.html'¶
- context_object_name = 'signups'¶
- paginate_by = 50¶
- class django_program.manage.views.ActivityDashboardExportView[source]¶
Bases:
ActivityOrganizerMixin,ViewExport activity signups as CSV.
- class django_program.manage.views.ActivityPromoteSignupView[source]¶
Bases:
ActivityOrganizerMixin,ViewPromote a waitlisted signup to confirmed.
- class django_program.manage.views.RoomSearchView[source]¶
Bases:
ManagePermissionMixin,ViewJSON API endpoint for room autocomplete within a conference.
- class django_program.manage.views.TravelGrantManageListView[source]¶
Bases:
ManagePermissionMixin,ListViewList travel grant applications for the current conference.
Provides summary statistics (total requested, total approved, counts by status) and a status filter bar for efficient grant review.
- template_name = 'django_program/manage/travel_grant_list.html'¶
- context_object_name = 'grants'¶
- paginate_by = 50¶
- class django_program.manage.views.TravelGrantReviewView[source]¶
Bases:
ManagePermissionMixin,UpdateViewReview a travel grant application.
- template_name = 'django_program/manage/travel_grant_edit.html'¶
- form_class¶
alias of
TravelGrantForm
- context_object_name = 'grant'¶
- form_valid(form)[source]¶
Record the reviewer and flash success.
- Parameters:
form (
TravelGrantForm)- Return type:
HttpResponse
- class django_program.manage.views.TravelGrantSendMessageView[source]¶
Bases:
ManagePermissionMixin,ViewPOST-only view for reviewers to send a message on a grant.
- class django_program.manage.views.TravelGrantDisburseView[source]¶
Bases:
ManagePermissionMixin,ViewMark a travel grant as disbursed.
- post(request, **kwargs)[source]¶
Record disbursement details and transition the grant status.
Only grants in the
acceptedstate can be disbursed. On success the grant is moved todisbursedand the disbursement amount, timestamp, and processing user are recorded.- Parameters:
request (
HttpRequest) – The incoming HTTP request.**kwargs (
str) – URL keyword arguments (expectspk).
- Return type:
HttpResponse- Returns:
A redirect to the grant review page.
- class django_program.manage.views.ReceiptReviewQueueView[source]¶
Bases:
ManagePermissionMixin,ViewPick a random pending receipt for review.
- class django_program.manage.views.ReceiptReviewDetailView[source]¶
Bases:
ManagePermissionMixin,DetailViewDisplay a receipt for review with approve/flag controls.
- template_name = 'django_program/manage/receipt_review.html'¶
- context_object_name = 'receipt'¶
- class django_program.manage.views.ReceiptApproveView[source]¶
Bases:
ManagePermissionMixin,ViewPOST-only view to approve a receipt.
- class django_program.manage.views.ReceiptFlagView[source]¶
Bases:
ManagePermissionMixin,ViewPOST-only view to flag a receipt.
- class django_program.manage.views.SyncPretalxView[source]¶
Bases:
ManagePermissionMixin,ViewTrigger a Pretalx sync for the current conference.
Accepts POST requests with optional checkboxes to select which entities to sync (rooms, speakers, talks, schedule). When no checkboxes are selected, syncs everything.
- class django_program.manage.views.SyncSponsorsView[source]¶
Bases:
ManagePermissionMixin,ViewTrigger a PSF sponsor sync for the current conference.
Accepts POST requests. Only available for PyCon US conferences where the sponsor profile supports API sync.
- post(request, **kwargs)[source]¶
Run the PSF sponsor sync and redirect back to the dashboard.
- Parameters:
request (
HttpRequest) – The incoming HTTP request.**kwargs (
str) – URL keyword arguments (unused).
- Return type:
HttpResponse- Returns:
A redirect to the conference dashboard with a flash message.
- class django_program.manage.views.SyncPretalxStreamView[source]¶
Bases:
ManagePermissionMixin,ViewStream Pretalx sync progress via Server-Sent Events.
Returns a
StreamingHttpResponsethat yields progress events as each sync step (rooms, speakers, talks, schedule) completes.
- class django_program.manage.views.PretalxEventSearchView[source]¶
Bases:
LoginRequiredMixin,ViewJSON API endpoint for Pretalx event autocomplete.
Returns a filtered list of events from the Pretalx API, matched against the
qquery parameter by slug and localized name. Results are cached in-memory for 5 minutes per API token.- get(request, **kwargs)[source]¶
Search Pretalx events by slug or name.
Reads
qfor the search text and an optionaltokenoverride. Fetches all events from the Pretalx API (cached for 5 minutes), filters by case-insensitive substring match on slug and localized name, and returns up to 20 results.- Parameters:
request (
HttpRequest) – The incoming HTTP request.**kwargs (
str) – URL keyword arguments (unused).
- Return type:
JsonResponse- Returns:
A JsonResponse with a list of matching events, or an error payload with status 502 on upstream failure.
- class django_program.manage.views.TicketTypeListView[source]¶
Bases:
ManagePermissionMixin,ListViewList ticket types for the current conference.
- template_name = 'django_program/manage/ticket_type_list.html'¶
- context_object_name = 'ticket_types'¶
- paginate_by = 50¶
- get_context_data(**kwargs)[source]¶
Add
active_navand global capacity info to the template context.
- get_queryset()[source]¶
Return ticket types for the current conference.
Annotates each ticket type with:
sold_count– number of order line items from paid or partially refunded orders.revenue– gross revenue (total line amounts before refunds).remaining_quantity– tickets still available for purchase, computed astotal_quantity - reservedwhere reserved counts quantities from paid/partially-refunded orders plus pending orders with an active inventory hold. Unlimited ticket types (total_quantity == 0) getNone.
- Return type:
- Returns:
A queryset of TicketType instances ordered by display order.
- class django_program.manage.views.TicketTypeCreateView[source]¶
Bases:
ManagePermissionMixin,CreateViewCreate a new ticket type for the current conference.
- template_name = 'django_program/manage/ticket_type_edit.html'¶
- form_class¶
alias of
TicketTypeForm
- form_valid(form)[source]¶
Assign the conference and auto-generate slug before saving.
- Parameters:
form (
TicketTypeForm)- Return type:
HttpResponse
- class django_program.manage.views.TicketTypeEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit a ticket type belonging to the current conference.
- template_name = 'django_program/manage/ticket_type_edit.html'¶
- form_class¶
alias of
TicketTypeForm
- context_object_name = 'ticket_type'¶
- form_valid(form)[source]¶
Save and flash success.
- Parameters:
form (
TicketTypeForm)- Return type:
HttpResponse
- class django_program.manage.views.AddOnListView[source]¶
Bases:
ManagePermissionMixin,ListViewList add-ons for the current conference.
- template_name = 'django_program/manage/addon_list.html'¶
- context_object_name = 'addons'¶
- paginate_by = 50¶
- get_queryset()[source]¶
Return add-ons for the current conference.
Annotates each add-on with
sold_countandrevenuefrom orders in paid or partially refunded status. Therevenuevalue represents gross revenue (total line amounts before any refunds are subtracted). Partially refunded orders contribute their full original line totals. Prefetches therequires_ticket_typesrelation for efficient template rendering.- Return type:
- Returns:
A queryset of AddOn instances ordered by display order.
- class django_program.manage.views.AddOnCreateView[source]¶
Bases:
ManagePermissionMixin,CreateViewCreate a new add-on for the current conference.
- template_name = 'django_program/manage/addon_edit.html'¶
- class django_program.manage.views.AddOnEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit an add-on belonging to the current conference.
- template_name = 'django_program/manage/addon_edit.html'¶
- context_object_name = 'addon'¶
- class django_program.manage.views.VoucherListView[source]¶
Bases:
ManagePermissionMixin,ListViewList vouchers for the current conference.
Voucher codes are partially masked in the template for security.
- template_name = 'django_program/manage/voucher_list.html'¶
- context_object_name = 'vouchers'¶
- paginate_by = 50¶
- class django_program.manage.views.VoucherCreateView[source]¶
Bases:
ManagePermissionMixin,CreateViewCreate a new voucher for the current conference.
- template_name = 'django_program/manage/voucher_edit.html'¶
- form_class¶
alias of
VoucherForm
- get_form(form_class=None)[source]¶
Scope the ticket type and add-on querysets to the current conference.
- Parameters:
form_class (
type[VoucherForm] |None)- Return type:
- form_valid(form)[source]¶
Assign the conference before saving.
- Parameters:
form (
VoucherForm)- Return type:
HttpResponse
- class django_program.manage.views.VoucherEditView[source]¶
Bases:
ManagePermissionMixin,UpdateViewEdit a voucher belonging to the current conference.
- template_name = 'django_program/manage/voucher_edit.html'¶
- form_class¶
alias of
VoucherForm
- context_object_name = 'voucher'¶
- get_form(form_class=None)[source]¶
Scope the ticket type and add-on querysets to the current conference.
- Parameters:
form_class (
type[VoucherForm] |None)- Return type:
- form_valid(form)[source]¶
Save and flash success.
- Parameters:
form (
VoucherForm)- Return type:
HttpResponse
- class django_program.manage.views.OrderListView[source]¶
Bases:
ManagePermissionMixin,ListViewList orders for the current conference.
Supports filtering by order status via the
statusGET parameter. Paginated at 50 orders per page.- template_name = 'django_program/manage/order_list.html'¶
- context_object_name = 'orders'¶
- paginate_by = 50¶
- class django_program.manage.views.OrderDetailView[source]¶
Bases:
ManagePermissionMixin,DetailViewDisplay full order details with line items and payments.
Includes a manual payment form for staff to record comp/manual payments.
- template_name = 'django_program/manage/order_detail.html'¶
- context_object_name = 'order'¶
- class django_program.manage.views.ManualPaymentView[source]¶
Bases:
ManagePermissionMixin,ViewPOST-only view to record a manual payment against an order.
When total successful payments meet or exceed the order total, the order status is automatically transitioned to
paid.