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,
|
|
|
|
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(Service)
|
|
|
|
class ServiceAdmin(admin.ModelAdmin):
|
2025-01-27 15:23:50 +01:00
|
|
|
list_display = (
|
|
|
|
"name",
|
|
|
|
"cloud_provider",
|
|
|
|
"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",
|
|
|
|
"categories",
|
|
|
|
"consulting_partners",
|
|
|
|
)
|
2025-01-28 10:06:56 +01:00
|
|
|
filter_horizontal = ("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"
|