introduce service plans
This commit is contained in:
parent
f69f7fb755
commit
70f4a02db9
11 changed files with 362 additions and 20 deletions
|
@ -5,9 +5,34 @@ from .models import (
|
|||
ConsultingPartner,
|
||||
Service,
|
||||
Category,
|
||||
Currency,
|
||||
Plan,
|
||||
PlanPrice,
|
||||
)
|
||||
|
||||
|
||||
class PlanPriceInline(admin.TabularInline):
|
||||
model = PlanPrice
|
||||
extra = 1
|
||||
min_num = 1
|
||||
verbose_name = "Price"
|
||||
verbose_name_plural = "Prices"
|
||||
|
||||
|
||||
class PlanInline(admin.StackedInline):
|
||||
model = Plan
|
||||
extra = 1
|
||||
show_change_link = True
|
||||
fields = ("name", "description", "is_default", "features", "order")
|
||||
classes = ("collapse",)
|
||||
inlines = [PlanPriceInline]
|
||||
|
||||
def get_formset(self, request, obj=None, **kwargs):
|
||||
formset = super().get_formset(request, obj, **kwargs)
|
||||
formset.request = request
|
||||
return formset
|
||||
|
||||
|
||||
@admin.register(Category)
|
||||
class CategoryAdmin(admin.ModelAdmin):
|
||||
list_display = ("name", "slug", "parent", "order")
|
||||
|
@ -36,7 +61,6 @@ class ServiceAdmin(admin.ModelAdmin):
|
|||
list_display = (
|
||||
"name",
|
||||
"cloud_provider",
|
||||
"price",
|
||||
"logo_preview",
|
||||
"category_list",
|
||||
"partner_list",
|
||||
|
@ -49,6 +73,7 @@ class ServiceAdmin(admin.ModelAdmin):
|
|||
filter_horizontal = ("categories", "consulting_partners")
|
||||
search_fields = ("name", "description", "slug")
|
||||
prepopulated_fields = {"slug": ("name",)}
|
||||
inlines = [PlanInline]
|
||||
|
||||
def logo_preview(self, obj):
|
||||
if obj.logo:
|
||||
|
@ -66,6 +91,9 @@ class ServiceAdmin(admin.ModelAdmin):
|
|||
partner_list.short_description = "Consulting Partners"
|
||||
category_list.short_description = "Categories"
|
||||
|
||||
class Media:
|
||||
css = {"all": ("admin/css/hide_inline_header.css",)}
|
||||
|
||||
|
||||
@admin.register(ConsultingPartner)
|
||||
class ConsultingPartnerAdmin(admin.ModelAdmin):
|
||||
|
@ -79,3 +107,19 @@ class ConsultingPartnerAdmin(admin.ModelAdmin):
|
|||
'<img src="{}" style="max-height: 50px;"/>', obj.logo.url
|
||||
)
|
||||
return "No logo"
|
||||
|
||||
|
||||
@admin.register(Currency)
|
||||
class CurrencyAdmin(admin.ModelAdmin):
|
||||
list_display = ("code", "name", "symbol")
|
||||
search_fields = ("code", "name")
|
||||
ordering = ("code",)
|
||||
|
||||
|
||||
@admin.register(Plan)
|
||||
class PlanAdmin(admin.ModelAdmin):
|
||||
list_display = ("name", "service", "is_default", "order")
|
||||
list_filter = ("service", "is_default")
|
||||
search_fields = ("name", "description")
|
||||
ordering = ("service", "order", "name")
|
||||
inlines = [PlanPriceInline]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue