from django.contrib import admin from .models import Reservation, ReservationToken class ReservationTokenInline(admin.TabularInline): model = ReservationToken extra = 0 readonly_fields = ("token_hash", "used_at", "created_at") fields = ("purpose", "token_hash", "expires_at", "used_at", "created_at") can_delete = False @admin.register(Reservation) class ReservationAdmin(admin.ModelAdmin): list_display = ( "name", "email", "performance", "party_size", "status", "confirmed_at", "qr_code_generated_at", "created_at", ) list_filter = ("status", "performance", "created_at", "confirmed_at") search_fields = ("name", "email", "phone", "performance__show__title") inlines = (ReservationTokenInline,) list_select_related = ("performance", "performance__show", "performance__venue") readonly_fields = ("created_at", "updated_at", "confirmed_at", "qr_code_generated_at") autocomplete_fields = ("performance",) @admin.register(ReservationToken) class ReservationTokenAdmin(admin.ModelAdmin): list_display = ("reservation", "purpose", "expires_at", "used_at", "created_at", "token_preview") list_filter = ("purpose", "expires_at", "used_at", "created_at") search_fields = ("reservation__name", "reservation__email", "token_hash") readonly_fields = ("token_hash", "created_at", "used_at") list_select_related = ("reservation", "reservation__performance") autocomplete_fields = ("reservation",) @admin.display(description="Token hash") def token_preview(self, obj): return obj.token_hash[:12]