from django.contrib import admin from django.utils.html import format_html from .models import CloudProvider, Country, ServiceLevel, Service, Category @admin.register(Category) class CategoryAdmin(admin.ModelAdmin): list_display = ("name", "slug", "parent", "order") list_filter = ("parent",) search_fields = ("name", "description") prepopulated_fields = {"slug": ("name",)} ordering = ("order", "name") @admin.register(CloudProvider) class CloudProviderAdmin(admin.ModelAdmin): list_display = ("name", "slug", "logo_preview") search_fields = ("name",) prepopulated_fields = {"slug": ("name",)} def logo_preview(self, obj): if obj.logo: return format_html( '', obj.logo.url ) return "No logo" @admin.register(Country) class CountryAdmin(admin.ModelAdmin): list_display = ("name", "code") search_fields = ("name", "code") @admin.register(ServiceLevel) class ServiceLevelAdmin(admin.ModelAdmin): list_display = ("name", "response_time") search_fields = ("name",) @admin.register(Service) class ServiceAdmin(admin.ModelAdmin): list_display = ( "name", "cloud_provider", "service_level", "price", "logo_preview", "category_list", ) list_filter = ("cloud_provider", "service_level", "countries", "categories") search_fields = ("name", "description") filter_horizontal = ("countries", "categories") def logo_preview(self, obj): if obj.logo: return format_html( '', obj.logo.url ) return "No logo" def category_list(self, obj): return ", ".join([cat.name for cat in obj.categories.all()]) category_list.short_description = "Categories"