Files
azionelab/backend/bookings/admin.py

46 lines
1.6 KiB
Python

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]