website/hub/services/admin.py

99 lines
2.6 KiB
Python
Raw Normal View History

2025-01-27 14:58:23 +01:00
from django.contrib import admin
2025-01-27 15:14:58 +01:00
from django.utils.html import format_html
2025-01-28 08:53:00 +01:00
from .models import (
CloudProvider,
ConsultingPartner,
Country,
ServiceLevel,
Service,
Category,
)
2025-01-27 15:23:50 +01:00
@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")
2025-01-27 14:58:23 +01:00
@admin.register(CloudProvider)
class CloudProviderAdmin(admin.ModelAdmin):
2025-01-27 15:54:37 +01:00
list_display = ("name", "slug", "logo_preview")
2025-01-27 14:58:23 +01:00
search_fields = ("name",)
2025-01-27 15:54:37 +01:00
prepopulated_fields = {"slug": ("name",)}
2025-01-27 14:58:23 +01:00
2025-01-27 15:14:58 +01:00
def logo_preview(self, obj):
if obj.logo:
return format_html(
'<img src="{}" style="max-height: 50px;"/>', obj.logo.url
)
return "No logo"
2025-01-27 14:58:23 +01:00
@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):
2025-01-27 15:23:50 +01:00
list_display = (
"name",
"cloud_provider",
"service_level",
"price",
"logo_preview",
"category_list",
2025-01-28 08:53:00 +01:00
"partner_list",
2025-01-27 15:23:50 +01:00
)
2025-01-28 08:53:00 +01:00
list_filter = (
"cloud_provider",
"service_level",
"countries",
"categories",
"consulting_partners",
)
filter_horizontal = ("countries", "categories", "consulting_partners")
2025-01-27 17:00:56 +01:00
search_fields = ("name", "description", "slug")
prepopulated_fields = {"slug": ("name",)}
2025-01-27 15:14:58 +01:00
def logo_preview(self, obj):
if obj.logo:
return format_html(
'<img src="{}" style="max-height: 50px;"/>', obj.logo.url
)
return "No logo"
2025-01-27 15:23:50 +01:00
def category_list(self, obj):
return ", ".join([cat.name for cat in obj.categories.all()])
2025-01-28 08:53:00 +01:00
def partner_list(self, obj):
return ", ".join([partner.name for partner in obj.consulting_partners.all()])
partner_list.short_description = "Consulting Partners"
2025-01-27 15:23:50 +01:00
category_list.short_description = "Categories"
2025-01-28 08:53:00 +01:00
@admin.register(ConsultingPartner)
class ConsultingPartnerAdmin(admin.ModelAdmin):
list_display = ("name", "website", "logo_preview")
search_fields = ("name", "description")
prepopulated_fields = {"slug": ("name",)}
def logo_preview(self, obj):
if obj.logo:
return format_html(
'<img src="{}" style="max-height: 50px;"/>', obj.logo.url
)
return "No logo"