from django.contrib import admin from django.utils.html import format_html from .models import SteamAPIKey, SteamCollection, SteamCollectionItem @admin.register(SteamAPIKey) class SteamAPIKeyAdmin(admin.ModelAdmin): list_display = ["name", "masked_api_key", "is_active", "last_used", "created_at"] list_filter = ["is_active", "created_at", "last_used"] search_fields = ["name", "description"] readonly_fields = ["created_at", "updated_at", "last_used", "masked_api_key"] fieldsets = ( ("Basic Information", {"fields": ("name", "description", "is_active")}), ( "API Key", { "fields": ("api_key", "masked_api_key"), "description": "Get your Steam API key from https://steamcommunity.com/dev/apikey", }, ), ( "Metadata", { "fields": ("created_at", "updated_at", "last_used"), "classes": ("collapse",), }, ), ) def masked_api_key(self, obj): """Display masked API key in admin""" if obj.api_key: return format_html( '{}', obj.masked_key, ) return "No key set" masked_api_key.short_description = "API Key (Masked)" def get_queryset(self, request): """Only superusers can see API keys""" qs = super().get_queryset(request) if not request.user.is_superuser: return qs.none() return qs def has_view_permission(self, request, obj=None): """Only superusers can view API keys""" return request.user.is_superuser def has_add_permission(self, request): """Only superusers can add API keys""" return request.user.is_superuser def has_change_permission(self, request, obj=None): """Only superusers can change API keys""" return request.user.is_superuser def has_delete_permission(self, request, obj=None): """Only superusers can delete API keys""" return request.user.is_superuser @admin.register(SteamCollection) class SteamCollectionAdmin(admin.ModelAdmin): list_display = [ "title", "steam_id", "author_name", "total_items", "current_favorites", "last_fetched", "is_active", ] list_filter = ["is_active", "last_fetched", "created_at"] search_fields = ["title", "steam_id", "author_name", "description"] readonly_fields = ["steam_id", "created_at", "updated_at", "last_fetched"] fieldsets = ( ( "Basic Information", {"fields": ("steam_id", "url", "title", "description", "is_active")}, ), ("Author Information", {"fields": ("author_name", "author_steam_id")}), ( "Statistics", { "fields": ( "total_items", "unique_visitors", "current_favorites", "total_favorites", ) }, ), ( "Timestamps", { "fields": ( "steam_created_date", "steam_updated_date", "created_at", "updated_at", "last_fetched", ) }, ), ("Status", {"fields": ("fetch_error",)}), ) @admin.register(SteamCollectionItem) class SteamCollectionItemAdmin(admin.ModelAdmin): list_display = [ "title", "steam_item_id", "collection", "author_name", "order_index", ] list_filter = ["collection", "created_at"] search_fields = ["title", "steam_item_id", "author_name", "description"] readonly_fields = ["created_at", "updated_at"] fieldsets = ( ( "Basic Information", { "fields": ( "collection", "steam_item_id", "title", "description", "order_index", ) }, ), ("Author Information", {"fields": ("author_name", "author_steam_id")}), ("Metadata", {"fields": ("tags",)}), ("Timestamps", {"fields": ("created_at", "updated_at")}), )