from django.contrib import admin from .models import Seller, Game, Set, Card, CardListing, PackListing, VirtualPack, Order, OrderItem, Cart, Bounty, VaultItem # Register your models here. @admin.register(Seller) class SellerAdmin(admin.ModelAdmin): list_display = ['store_name', 'user', 'slug', 'created_at'] search_fields = ['store_name', 'user__username'] readonly_fields = ['tax_id', 'payout_details', 'tax_id_encrypted', 'payout_details_encrypted'] @admin.register(Game) class GameAdmin(admin.ModelAdmin): list_display = ['name', 'slug'] @admin.register(Set) class SetAdmin(admin.ModelAdmin): list_display = ['name', 'game', 'code', 'release_date'] list_select_related = ['game'] search_fields = ['name', 'code'] list_filter = ['game'] class CardListingInline(admin.StackedInline): model = CardListing extra = 0 autocomplete_fields = ['seller'] @admin.register(Card) class CardAdmin(admin.ModelAdmin): list_display = ['name', 'set', 'rarity', 'collector_number', 'scryfall_id', 'uuid'] list_select_related = ['set', 'set__game'] search_fields = ['name', 'set__name', 'collector_number', 'uuid'] list_filter = ['set__game', 'rarity'] inlines = [CardListingInline] @admin.register(CardListing) class CardListingAdmin(admin.ModelAdmin): list_display = ['card', 'seller', 'condition', 'price', 'status', 'quantity', 'uuid'] list_select_related = ['card', 'card__set', 'seller'] list_filter = ['status', 'condition', 'is_foil'] autocomplete_fields = ['card', 'seller'] @admin.register(PackListing) class PackListingAdmin(admin.ModelAdmin): list_display = ['name', 'game', 'seller', 'listing_type', 'price', 'uuid'] list_select_related = ['game', 'seller'] list_filter = ['listing_type', 'game'] autocomplete_fields = ['seller'] @admin.register(VirtualPack) class VirtualPackAdmin(admin.ModelAdmin): list_display = ['listing', 'owner', 'status', 'created_at', 'uuid'] list_select_related = ['listing', 'owner', 'owner__user'] list_filter = ['status'] raw_id_fields = ['owner'] # Buyer might not have search_fields set up yet, safer to use raw_id or just autocomplete if Buyer has search @admin.register(Order) class OrderAdmin(admin.ModelAdmin): list_display = ['id', 'uuid', 'buyer_info', 'status', 'total_price', 'created_at'] list_select_related = ['buyer', 'buyer__user'] list_filter = ['status', 'created_at'] def buyer_info(self, obj): return obj.buyer.user.username buyer_info.short_description = 'Buyer' @admin.register(OrderItem) class OrderItemAdmin(admin.ModelAdmin): list_display = ['order', 'item_description', 'price_at_purchase', 'quantity'] list_select_related = ['order', 'listing', 'listing__card', 'pack_listing'] def item_description(self, obj): if obj.pack_listing: return obj.pack_listing.name return obj.listing.card.name if obj.listing else "Deleted Listing" @admin.register(Cart) class CartAdmin(admin.ModelAdmin): list_display = ['buyer', 'created_at', 'insurance'] list_select_related = ['buyer', 'buyer__user'] @admin.register(Bounty) class BountyAdmin(admin.ModelAdmin): list_display = ['card', 'target_price', 'quantity_wanted', 'is_active', 'uuid'] list_select_related = ['card', 'card__set'] autocomplete_fields = ['card'] @admin.register(VaultItem) class VaultItemAdmin(admin.ModelAdmin): list_display = ['buyer', 'card', 'quantity', 'added_at'] list_select_related = ['buyer', 'buyer__user', 'card', 'card__set'] autocomplete_fields = ['card'] raw_id_fields = ['buyer']