django_program.registration.admin¶
Django admin configuration for the registration app.
Classes
Admin interface for managing add-ons. |
|
Admin interface for viewing and managing conference attendees. |
|
Read-only admin for viewing generated badges. |
|
Admin interface for managing badge layout templates. |
|
Admin interface for viewing shopping carts. |
|
Inline display of cart items within the cart admin. |
|
Admin interface for viewing conference check-in records. |
|
Admin interface for managing store credits. |
|
Admin for category-wide percentage discounts. |
|
Admin for direct product discounts. |
|
Admin interface for viewing per-product door check records. |
|
Read-only admin for webhook processing errors. |
|
Admin for group-membership-based discount conditions. |
|
Admin for included-product discount conditions. |
|
Admin interface for managing orders. |
|
Inline display of order line items within the order admin. |
|
Inline display of payments within the order admin. |
|
Read-only admin for viewing product redemption audit records. |
|
Admin interface for managing corporate purchase orders. |
|
Read-only inline display of credit notes issued against a purchase order. |
|
Inline display of purchase order line items. |
|
Read-only inline display of payments recorded against a purchase order. |
|
Admin for speaker-based discount conditions. |
|
Read-only admin for Stripe customer mappings. |
|
Read-only admin for Stripe webhook events. |
|
Read-only admin for Stripe Terminal payment records. |
|
Admin interface for managing ticket types. |
|
Admin for time-window and stock-limited conditions. |
|
Admin interface for managing vouchers. |
- class django_program.registration.admin.AttendeeAdmin[source]¶
Bases:
ModelAdminAdmin interface for viewing and managing conference attendees.
- list_display = ('user', 'conference', 'access_code', 'completed_registration', 'checked_in_at')¶
- list_filter = ('conference', 'completed_registration')¶
- search_fields = ('user__username', 'user__email', 'access_code')¶
- readonly_fields = ('access_code',)¶
- property media¶
- class django_program.registration.admin.TicketTypeAdmin[source]¶
Bases:
ModelAdminAdmin interface for managing ticket types.
Provides filtering by conference and active status, search by name and slug, and auto-population of the slug from the ticket name.
- list_display = ('name', 'conference', 'price', 'is_active', 'bulk_enabled', 'order')¶
- list_filter = ('conference', 'is_active', 'bulk_enabled')¶
- search_fields = ('name', 'slug')¶
- prepopulated_fields = {'slug': ('name',)}¶
- property media¶
- class django_program.registration.admin.AddOnAdmin[source]¶
Bases:
ModelAdminAdmin interface for managing add-ons.
Uses
filter_horizontalfor therequires_ticket_typesmany-to-many field to provide a friendlier selection widget.- list_display = ('name', 'conference', 'price', 'is_active', 'bulk_enabled')¶
- list_filter = ('conference', 'is_active', 'bulk_enabled')¶
- search_fields = ('name', 'slug')¶
- prepopulated_fields = {'slug': ('name',)}¶
- filter_horizontal = ('requires_ticket_types',)¶
- property media¶
- class django_program.registration.admin.VoucherAdmin[source]¶
Bases:
ModelAdminAdmin interface for managing vouchers.
Displays usage counts alongside the voucher configuration and allows filtering by conference, type, and active status.
- list_display = ('code', 'conference', 'voucher_type', 'discount_value', 'times_used', 'max_uses', 'is_active')¶
- list_filter = ('conference', 'voucher_type', 'is_active')¶
- search_fields = ('code',)¶
- filter_horizontal = ('applicable_ticket_types', 'applicable_addons')¶
- property media¶
- class django_program.registration.admin.CartItemInline[source]¶
Bases:
TabularInlineInline display of cart items within the cart admin.
Items are shown as read-only since they are managed through the storefront, not directly in the admin.
- extra = 0¶
- readonly_fields = ('ticket_type', 'addon', 'quantity')¶
- property media¶
- class django_program.registration.admin.CartAdmin[source]¶
Bases:
ModelAdminAdmin interface for viewing shopping carts.
Carts are primarily managed by the storefront; the admin provides a read-oriented view with inline cart items.
- list_display = ('user', 'conference', 'status', 'voucher', 'expires_at')¶
- list_filter = ('conference', 'status')¶
- inlines = (<class 'django_program.registration.admin.CartItemInline'>,)¶
- property media¶
- class django_program.registration.admin.OrderLineItemInline[source]¶
Bases:
TabularInlineInline display of order line items within the order admin.
Line items are immutable snapshots from checkout and are shown read-only.
- model¶
alias of
OrderLineItem
- extra = 0¶
- readonly_fields = ('description', 'quantity', 'unit_price', 'discount_amount', 'line_total', 'ticket_type', 'addon')¶
- property media¶
- class django_program.registration.admin.PaymentInline[source]¶
Bases:
TabularInlineInline display of payments within the order admin.
- extra = 0¶
- property media¶
- class django_program.registration.admin.OrderAdmin[source]¶
Bases:
ModelAdminAdmin interface for managing orders.
Displays order reference, user, status, and financial totals. Money fields are read-only to prevent accidental edits; changes should flow through the payment and refund workflows instead.
- list_display = ('reference', 'user', 'conference', 'status', 'total', 'created_at')¶
- list_filter = ('conference', 'status')¶
- search_fields = ('reference', 'user__email', 'billing_email')¶
- readonly_fields = ('subtotal', 'discount_amount', 'total')¶
- inlines = (<class 'django_program.registration.admin.OrderLineItemInline'>, <class 'django_program.registration.admin.PaymentInline'>)¶
- property media¶
- class django_program.registration.admin.CreditAdmin[source]¶
Bases:
ModelAdminAdmin interface for managing store credits.
Provides filtering by conference and credit status, and displays the amount and creation date at a glance.
- list_display = ('user', 'conference', 'amount', 'status', 'created_at')¶
- list_filter = ('conference', 'status')¶
- property media¶
- class django_program.registration.admin.StripeCustomerAdmin[source]¶
Bases:
ModelAdminRead-only admin for Stripe customer mappings.
- list_display = ('user', 'conference', 'stripe_customer_id', 'created_at')¶
- list_filter = ('conference',)¶
- search_fields = ('user__email', 'stripe_customer_id')¶
- readonly_fields = ('user', 'conference', 'stripe_customer_id', 'created_at')¶
- has_add_permission(request)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)- Return type:
- has_change_permission(request, obj=None)[source]¶
Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to change the obj model instance. If obj is None, this should return True if the given request has permission to change any object of the given type.
- Parameters:
request (
HttpRequest)obj (
StripeCustomer|None)
- Return type:
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- Parameters:
request (
HttpRequest)obj (
StripeCustomer|None)
- Return type:
- property media¶
- class django_program.registration.admin.StripeEventAdmin[source]¶
Bases:
ModelAdminRead-only admin for Stripe webhook events.
- list_display = ('stripe_id', 'kind', 'processed', 'livemode', 'created_at')¶
- list_filter = ('kind', 'processed', 'livemode')¶
- search_fields = ('stripe_id', 'customer_id')¶
- readonly_fields = ('stripe_id', 'kind', 'livemode', 'payload', 'customer_id', 'processed', 'api_version', 'created_at')¶
- has_add_permission(request)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)- Return type:
- has_change_permission(request, obj=None)[source]¶
Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to change the obj model instance. If obj is None, this should return True if the given request has permission to change any object of the given type.
- Parameters:
request (
HttpRequest)obj (
StripeEvent|None)
- Return type:
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- Parameters:
request (
HttpRequest)obj (
StripeEvent|None)
- Return type:
- property media¶
- class django_program.registration.admin.EventProcessingExceptionAdmin[source]¶
Bases:
ModelAdminRead-only admin for webhook processing errors.
- list_display = ('message', 'event', 'created_at')¶
- list_filter = ('created_at',)¶
- search_fields = ('message',)¶
- readonly_fields = ('event', 'data', 'message', 'traceback', 'created_at')¶
- has_add_permission(request)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)- Return type:
- has_change_permission(request, obj=None)[source]¶
Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to change the obj model instance. If obj is None, this should return True if the given request has permission to change any object of the given type.
- Parameters:
request (
HttpRequest)obj (
EventProcessingException|None)
- Return type:
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- Parameters:
request (
HttpRequest)obj (
EventProcessingException|None)
- Return type:
- property media¶
- class django_program.registration.admin.TimeOrStockLimitConditionAdmin[source]¶
Bases:
ModelAdminAdmin for time-window and stock-limited conditions.
- list_display = ('name', 'conference', 'is_active', 'priority', 'discount_type', 'discount_value', 'start_time', 'end_time', 'times_used', 'limit')¶
- list_filter = ('conference', 'is_active', 'discount_type')¶
- search_fields = ('name',)¶
- filter_horizontal = ('applicable_ticket_types', 'applicable_addons')¶
- property media¶
- class django_program.registration.admin.SpeakerConditionAdmin[source]¶
Bases:
ModelAdminAdmin for speaker-based discount conditions.
- list_display = ('name', 'conference', 'is_active', 'priority', 'discount_type', 'discount_value', 'is_presenter', 'is_copresenter')¶
- list_filter = ('conference', 'is_active', 'is_presenter', 'is_copresenter')¶
- search_fields = ('name',)¶
- filter_horizontal = ('applicable_ticket_types', 'applicable_addons')¶
- property media¶
- class django_program.registration.admin.GroupMemberConditionAdmin[source]¶
Bases:
ModelAdminAdmin for group-membership-based discount conditions.
- list_display = ('name', 'conference', 'is_active', 'priority', 'discount_type', 'discount_value')¶
- list_filter = ('conference', 'is_active')¶
- search_fields = ('name',)¶
- filter_horizontal = ('applicable_ticket_types', 'applicable_addons', 'groups')¶
- property media¶
- class django_program.registration.admin.IncludedProductConditionAdmin[source]¶
Bases:
ModelAdminAdmin for included-product discount conditions.
- list_display = ('name', 'conference', 'is_active', 'priority', 'discount_type', 'discount_value')¶
- list_filter = ('conference', 'is_active')¶
- search_fields = ('name',)¶
- filter_horizontal = ('applicable_ticket_types', 'applicable_addons', 'enabling_ticket_types')¶
- property media¶
- class django_program.registration.admin.DiscountForProductAdmin[source]¶
Bases:
ModelAdminAdmin for direct product discounts.
- list_display = ('name', 'conference', 'is_active', 'priority', 'discount_type', 'discount_value', 'start_time', 'end_time', 'times_used', 'limit')¶
- list_filter = ('conference', 'is_active', 'discount_type')¶
- search_fields = ('name',)¶
- filter_horizontal = ('applicable_ticket_types', 'applicable_addons')¶
- property media¶
- class django_program.registration.admin.DiscountForCategoryAdmin[source]¶
Bases:
ModelAdminAdmin for category-wide percentage discounts.
- list_display = ('name', 'conference', 'is_active', 'priority', 'percentage', 'apply_to_tickets', 'apply_to_addons', 'times_used', 'limit')¶
- list_filter = ('conference', 'is_active', 'apply_to_tickets', 'apply_to_addons')¶
- search_fields = ('name',)¶
- property media¶
- class django_program.registration.admin.CheckInAdmin[source]¶
Bases:
ModelAdminAdmin interface for viewing conference check-in records.
- list_display = ('attendee', 'conference', 'station', 'checked_in_by', 'checked_in_at')¶
- list_filter = ('conference', 'station')¶
- search_fields = ('attendee__user__username', 'attendee__user__email', 'attendee__access_code')¶
- readonly_fields = ('attendee', 'conference', 'checked_in_at', 'checked_in_by', 'station', 'note')¶
- has_add_permission(request)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)- Return type:
- has_change_permission(request, obj=None)[source]¶
Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to change the obj model instance. If obj is None, this should return True if the given request has permission to change any object of the given type.
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- property media¶
- class django_program.registration.admin.DoorCheckAdmin[source]¶
Bases:
ModelAdminAdmin interface for viewing per-product door check records.
- list_display = ('attendee', 'conference', 'ticket_type', 'addon', 'station', 'checked_by', 'checked_at')¶
- list_filter = ('conference', 'station')¶
- search_fields = ('attendee__user__username', 'attendee__user__email', 'attendee__access_code')¶
- readonly_fields = ('attendee', 'ticket_type', 'addon', 'conference', 'checked_at', 'checked_by', 'station')¶
- has_add_permission(request)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)- Return type:
- has_change_permission(request, obj=None)[source]¶
Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to change the obj model instance. If obj is None, this should return True if the given request has permission to change any object of the given type.
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- property media¶
- class django_program.registration.admin.ProductRedemptionAdmin[source]¶
Bases:
ModelAdminRead-only admin for viewing product redemption audit records.
- list_display = ('attendee', 'order_line_item', 'conference', 'redeemed_by', 'redeemed_at')¶
- list_filter = ('conference',)¶
- search_fields = ('attendee__user__username', 'attendee__user__email', 'attendee__access_code')¶
- readonly_fields = ('attendee', 'order_line_item', 'conference', 'redeemed_at', 'redeemed_by', 'note')¶
- has_add_permission(request)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)- Return type:
- has_change_permission(request, obj=None)[source]¶
Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to change the obj model instance. If obj is None, this should return True if the given request has permission to change any object of the given type.
- Parameters:
request (
HttpRequest)obj (
ProductRedemption|None)
- Return type:
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- Parameters:
request (
HttpRequest)obj (
ProductRedemption|None)
- Return type:
- property media¶
- class django_program.registration.admin.BadgeTemplateAdmin[source]¶
Bases:
ModelAdminAdmin interface for managing badge layout templates.
- list_display = ('name', 'conference', 'is_default', 'width_mm', 'height_mm')¶
- list_filter = ('conference', 'is_default')¶
- search_fields = ('name',)¶
- prepopulated_fields = {'slug': ('name',)}¶
- property media¶
- class django_program.registration.admin.BadgeAdmin[source]¶
Bases:
ModelAdminRead-only admin for viewing generated badges.
- list_display = ('attendee', 'format', 'generated_at', 'created_at')¶
- list_filter = ('format', 'generated_at')¶
- search_fields = ('attendee__user__username', 'attendee__user__email', 'attendee__access_code')¶
- readonly_fields = ('attendee', 'template', 'format', 'file', 'generated_at')¶
- has_add_permission(request)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)- Return type:
- has_change_permission(request, obj=None)[source]¶
Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to change the obj model instance. If obj is None, this should return True if the given request has permission to change any object of the given type.
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- property media¶
- class django_program.registration.admin.TerminalPaymentAdmin[source]¶
Bases:
ModelAdminRead-only admin for Stripe Terminal payment records.
- list_display = ('payment_intent_id', 'conference', 'capture_status', 'card_brand', 'card_last4', 'reader_id', 'created_at')¶
- list_filter = ('conference', 'capture_status', 'card_brand')¶
- search_fields = ('payment_intent_id', 'reader_id', 'terminal_id', 'card_last4')¶
- readonly_fields = ('payment', 'conference', 'terminal_id', 'reader_id', 'payment_intent_id', 'capture_status', 'captured_at', 'cancelled_at', 'card_brand', 'card_last4', 'receipt_url', 'created_at', 'updated_at')¶
- has_add_permission(request)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)- Return type:
- has_change_permission(request, obj=None)[source]¶
Return True if the given request has permission to change the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to change the obj model instance. If obj is None, this should return True if the given request has permission to change any object of the given type.
- Parameters:
request (
HttpRequest)obj (
TerminalPayment|None)
- Return type:
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- Parameters:
request (
HttpRequest)obj (
TerminalPayment|None)
- Return type:
- property media¶
- class django_program.registration.admin.PurchaseOrderLineItemInline[source]¶
Bases:
TabularInlineInline display of purchase order line items.
Line items are pricing snapshots and
line_totalis read-only to prevent manual edits that would desynchronize the PO totals.- model¶
alias of
PurchaseOrderLineItem
- extra = 0¶
- readonly_fields = ('line_total',)¶
- property media¶
- class django_program.registration.admin.PurchaseOrderPaymentInline[source]¶
Bases:
TabularInlineRead-only inline display of payments recorded against a purchase order.
Payments should be recorded through the management dashboard to ensure proper status transitions. The inline is read-only to prevent bypassing the service layer invariants.
- model¶
alias of
PurchaseOrderPayment
- extra = 0¶
- readonly_fields = ('amount', 'method', 'reference', 'payment_date', 'entered_by', 'note', 'created_at')¶
- has_add_permission(request, obj=None)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)obj (
PurchaseOrder|None)
- Return type:
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- Parameters:
request (
HttpRequest)obj (
PurchaseOrder|None)
- Return type:
- property media¶
- class django_program.registration.admin.PurchaseOrderCreditNoteInline[source]¶
Bases:
TabularInlineRead-only inline display of credit notes issued against a purchase order.
Credit notes should be issued through the management dashboard to ensure proper status recalculation. The inline is read-only for audit integrity.
- model¶
alias of
PurchaseOrderCreditNote
- extra = 0¶
- readonly_fields = ('amount', 'reason', 'issued_by', 'created_at')¶
- has_add_permission(request, obj=None)[source]¶
Return True if the given request has permission to add an object. Can be overridden by the user in subclasses.
- Parameters:
request (
HttpRequest)obj (
PurchaseOrder|None)
- Return type:
- has_delete_permission(request, obj=None)[source]¶
Return True if the given request has permission to delete the given Django model instance, the default implementation doesn’t examine the obj parameter.
Can be overridden by the user in subclasses. In such case it should return True if the given request has permission to delete the obj model instance. If obj is None, this should return True if the given request has permission to delete any object of the given type.
- Parameters:
request (
HttpRequest)obj (
PurchaseOrder|None)
- Return type:
- property media¶
- class django_program.registration.admin.PurchaseOrderAdmin[source]¶
Bases:
ModelAdminAdmin interface for managing corporate purchase orders.
Displays the PO reference, organization, status, and financial summary. Money fields are read-only to prevent manual edits; changes should flow through the payment recording and credit note workflows.
- list_display = ('reference', 'organization_name', 'conference', 'status', 'total', 'balance_due_display', 'created_at')¶
- list_filter = ('conference', 'status')¶
- search_fields = ('reference', 'organization_name', 'contact_email')¶
- readonly_fields = ('reference', 'subtotal', 'total', 'balance_due_display', 'total_paid_display')¶
- inlines = (<class 'django_program.registration.admin.PurchaseOrderLineItemInline'>, <class 'django_program.registration.admin.PurchaseOrderPaymentInline'>, <class 'django_program.registration.admin.PurchaseOrderCreditNoteInline'>)¶
- get_queryset(request)[source]¶
Annotate payment and credit totals to avoid N+1 aggregate queries.
- Parameters:
request (
HttpRequest)- Return type:
- balance_due_display(obj)[source]¶
Render the computed balance due for the list and detail views.
- Parameters:
obj (
PurchaseOrder)- Return type:
- total_paid_display(obj)[source]¶
Render the computed total paid for the detail view.
- Parameters:
obj (
PurchaseOrder)- Return type:
- property media¶