update
This commit is contained in:
105
gnx-react/backend/case_studies/admin.py
Normal file
105
gnx-react/backend/case_studies/admin.py
Normal file
@@ -0,0 +1,105 @@
|
||||
from django.contrib import admin
|
||||
from .models import CaseStudy, CaseStudyCategory, Client, CaseStudyImage, CaseStudyProcess
|
||||
|
||||
|
||||
@admin.register(CaseStudyCategory)
|
||||
class CaseStudyCategoryAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'slug', 'display_order', 'is_active', 'case_studies_count']
|
||||
list_filter = ['is_active']
|
||||
search_fields = ['name', 'slug']
|
||||
prepopulated_fields = {'slug': ('name',)}
|
||||
ordering = ['display_order', 'name']
|
||||
|
||||
def case_studies_count(self, obj):
|
||||
return obj.case_studies.count()
|
||||
case_studies_count.short_description = 'Case Studies Count'
|
||||
|
||||
|
||||
@admin.register(Client)
|
||||
class ClientAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'slug', 'website', 'is_active', 'case_studies_count']
|
||||
list_filter = ['is_active', 'created_at']
|
||||
search_fields = ['name', 'slug', 'website']
|
||||
prepopulated_fields = {'slug': ('name',)}
|
||||
ordering = ['name']
|
||||
|
||||
def case_studies_count(self, obj):
|
||||
return obj.case_studies.count()
|
||||
case_studies_count.short_description = 'Case Studies Count'
|
||||
|
||||
|
||||
class CaseStudyImageInline(admin.TabularInline):
|
||||
model = CaseStudyImage
|
||||
extra = 1
|
||||
fields = ['image', 'image_url', 'caption', 'display_order']
|
||||
|
||||
|
||||
class CaseStudyProcessInline(admin.TabularInline):
|
||||
model = CaseStudyProcess
|
||||
extra = 1
|
||||
fields = ['step_number', 'title', 'description']
|
||||
ordering = ['step_number']
|
||||
|
||||
|
||||
@admin.register(CaseStudy)
|
||||
class CaseStudyAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
'title', 'category', 'client', 'published',
|
||||
'featured', 'views_count', 'display_order', 'published_at'
|
||||
]
|
||||
list_filter = [
|
||||
'published', 'featured', 'category',
|
||||
'client', 'published_at', 'created_at'
|
||||
]
|
||||
search_fields = ['title', 'description', 'excerpt']
|
||||
prepopulated_fields = {'slug': ('title',)}
|
||||
date_hierarchy = 'published_at'
|
||||
ordering = ['display_order', '-published_at', '-created_at']
|
||||
inlines = [CaseStudyImageInline, CaseStudyProcessInline]
|
||||
|
||||
fieldsets = (
|
||||
('Basic Information', {
|
||||
'fields': ('title', 'slug', 'subtitle', 'category', 'client')
|
||||
}),
|
||||
('Content', {
|
||||
'fields': ('excerpt', 'description', 'project_overview', 'site_map_content')
|
||||
}),
|
||||
('Images', {
|
||||
'fields': (
|
||||
'thumbnail', 'thumbnail_url',
|
||||
'featured_image', 'featured_image_url',
|
||||
'poster_image', 'poster_image_url',
|
||||
'project_image', 'project_image_url'
|
||||
)
|
||||
}),
|
||||
('SEO', {
|
||||
'fields': ('meta_description', 'meta_keywords'),
|
||||
'classes': ('collapse',)
|
||||
}),
|
||||
('Status & Visibility', {
|
||||
'fields': ('published', 'featured', 'display_order', 'published_at')
|
||||
}),
|
||||
('Statistics', {
|
||||
'fields': ('views_count',),
|
||||
'classes': ('collapse',)
|
||||
}),
|
||||
)
|
||||
|
||||
readonly_fields = ['views_count']
|
||||
|
||||
|
||||
@admin.register(CaseStudyImage)
|
||||
class CaseStudyImageAdmin(admin.ModelAdmin):
|
||||
list_display = ['case_study', 'caption', 'display_order', 'created_at']
|
||||
list_filter = ['case_study', 'created_at']
|
||||
search_fields = ['case_study__title', 'caption']
|
||||
ordering = ['case_study', 'display_order']
|
||||
|
||||
|
||||
@admin.register(CaseStudyProcess)
|
||||
class CaseStudyProcessAdmin(admin.ModelAdmin):
|
||||
list_display = ['case_study', 'step_number', 'title', 'created_at']
|
||||
list_filter = ['case_study', 'created_at']
|
||||
search_fields = ['case_study__title', 'title', 'description']
|
||||
ordering = ['case_study', 'step_number']
|
||||
|
||||
Reference in New Issue
Block a user