"""Django admin configuration for the sponsors app."""
from django.contrib import admin
from django.http import HttpRequest # noqa: TC002
from django_program.sponsors.models import (
BulkPurchase,
BulkPurchaseVoucher,
Sponsor,
SponsorBenefit,
SponsorLevel,
SponsorOverride,
)
[docs]
class BulkPurchaseVoucherInline(admin.TabularInline):
"""Read-only inline for vouchers generated by a bulk purchase."""
model = BulkPurchaseVoucher
extra = 0
fields = ("voucher", "created_at")
readonly_fields = ("voucher", "created_at")
can_delete = False
[docs]
def has_add_permission(self, request: HttpRequest, obj: object = None) -> bool: # noqa: ARG002
"""Prevent manual addition of voucher links."""
return False
[docs]
@admin.register(BulkPurchase)
class BulkPurchaseAdmin(admin.ModelAdmin):
"""Admin interface for managing sponsor bulk voucher purchases."""
list_display = ("__str__", "conference", "sponsor", "quantity", "payment_status", "total_amount", "created_at")
list_filter = ("conference", "payment_status")
search_fields = ("sponsor__name", "product_description", "stripe_payment_intent_id")
raw_id_fields = ("sponsor", "ticket_type", "requested_by", "approved_by")
readonly_fields = ("created_at", "updated_at")
inlines = (BulkPurchaseVoucherInline,)
[docs]
@admin.register(BulkPurchaseVoucher)
class BulkPurchaseVoucherAdmin(admin.ModelAdmin):
"""Admin interface for viewing bulk purchase voucher links."""
list_display = ("bulk_purchase", "voucher", "created_at")
list_filter = ("bulk_purchase__conference",)
search_fields = ("voucher__code", "bulk_purchase__sponsor__name")
raw_id_fields = ("bulk_purchase", "voucher")
readonly_fields = ("created_at",)