diff --git a/hub/services/admin/pricing.py b/hub/services/admin/pricing.py index ac9711d..fe8c03e 100644 --- a/hub/services/admin/pricing.py +++ b/hub/services/admin/pricing.py @@ -322,10 +322,26 @@ class DiscountTierInline(admin.TabularInline): class ProgressiveDiscountModelAdmin(admin.ModelAdmin): """Admin configuration for ProgressiveDiscountModel""" - list_display = ("name", "description", "active") + list_display = ("name", "description", "active", "admin_display_discount_tiers") search_fields = ("name", "description") inlines = [DiscountTierInline] + def admin_display_discount_tiers(self, obj): + """Display discount tiers in admin list view""" + tiers = obj.tiers.all().order_by("min_units") + if not tiers: + return "No discount tiers" + return format_html( + "
".join( + [ + f"{tier.min_units}-{tier.max_units if tier.max_units else '∞'} units: {tier.discount_percent}%" + for tier in tiers + ] + ) + ) + + admin_display_discount_tiers.short_description = "Discount Tiers" + @admin.register(VSHNAppCatPrice) class VSHNAppCatPriceAdmin(admin.ModelAdmin): @@ -350,7 +366,12 @@ class VSHNAppCatPriceAdmin(admin.ModelAdmin): if not fees: return "No base fees" return format_html( - "
".join([f"{fee.amount} {fee.currency} ({fee.get_service_level_display()})" for fee in fees]) + "
".join( + [ + f"{fee.amount} {fee.currency} ({fee.get_service_level_display()})" + for fee in fees + ] + ) ) admin_display_base_fees.short_description = "Base Fees" @@ -618,7 +639,12 @@ class VSHNAppCatAddonAdmin(admin.ModelAdmin): if not fees: return "No base fees set" return format_html( - "
".join([f"{fee.amount} {fee.currency} ({fee.get_service_level_display()})" for fee in fees]) + "
".join( + [ + f"{fee.amount} {fee.currency} ({fee.get_service_level_display()})" + for fee in fees + ] + ) ) elif obj.addon_type == "UR": # Unit Rate rates = obj.unit_rates.all()