93 lines
3.6 KiB
Python
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']
|