Files
Example-TCG-Site/store/admin.py
Ryan Westfall 739d136209 Last bit of major changes
Closes #1
Closes #5
Closes #6
Closes #8
Closes #9
Closes #10
2026-01-26 04:11:38 -06:00

93 lines
3.6 KiB
Python

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']