update
This commit is contained in:
98
backEnd/blog/admin.py
Normal file
98
backEnd/blog/admin.py
Normal file
@@ -0,0 +1,98 @@
|
||||
from django.contrib import admin
|
||||
from .models import BlogPost, BlogCategory, BlogAuthor, BlogTag, BlogComment
|
||||
|
||||
|
||||
@admin.register(BlogAuthor)
|
||||
class BlogAuthorAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'email', 'is_active', 'created_at']
|
||||
list_filter = ['is_active', 'created_at']
|
||||
search_fields = ['name', 'email']
|
||||
ordering = ['name']
|
||||
|
||||
|
||||
@admin.register(BlogCategory)
|
||||
class BlogCategoryAdmin(admin.ModelAdmin):
|
||||
list_display = ['title', 'slug', 'display_order', 'is_active', 'posts_count']
|
||||
list_filter = ['is_active']
|
||||
search_fields = ['title', 'slug']
|
||||
prepopulated_fields = {'slug': ('title',)}
|
||||
ordering = ['display_order', 'title']
|
||||
|
||||
def posts_count(self, obj):
|
||||
return obj.posts.count()
|
||||
posts_count.short_description = 'Posts Count'
|
||||
|
||||
|
||||
@admin.register(BlogTag)
|
||||
class BlogTagAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'slug', 'is_active', 'posts_count']
|
||||
list_filter = ['is_active']
|
||||
search_fields = ['name', 'slug']
|
||||
prepopulated_fields = {'slug': ('name',)}
|
||||
ordering = ['name']
|
||||
|
||||
def posts_count(self, obj):
|
||||
return obj.posts.count()
|
||||
posts_count.short_description = 'Posts Count'
|
||||
|
||||
|
||||
@admin.register(BlogPost)
|
||||
class BlogPostAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
'title', 'author', 'category', 'published',
|
||||
'featured', 'views_count', 'published_at'
|
||||
]
|
||||
list_filter = [
|
||||
'published', 'featured', 'category',
|
||||
'author', 'published_at', 'created_at'
|
||||
]
|
||||
search_fields = ['title', 'content', 'excerpt']
|
||||
prepopulated_fields = {'slug': ('title',)}
|
||||
filter_horizontal = ['tags']
|
||||
date_hierarchy = 'published_at'
|
||||
ordering = ['-published_at', '-created_at']
|
||||
|
||||
fieldsets = (
|
||||
('Basic Information', {
|
||||
'fields': ('title', 'slug', 'author', 'category')
|
||||
}),
|
||||
('Content', {
|
||||
'fields': ('excerpt', 'content')
|
||||
}),
|
||||
('Images', {
|
||||
'fields': ('thumbnail', 'thumbnail_url', 'featured_image', 'featured_image_url')
|
||||
}),
|
||||
('Categorization', {
|
||||
'fields': ('tags',)
|
||||
}),
|
||||
('SEO', {
|
||||
'fields': ('meta_description', 'meta_keywords'),
|
||||
'classes': ('collapse',)
|
||||
}),
|
||||
('Status & Visibility', {
|
||||
'fields': ('published', 'featured', 'reading_time', 'published_at')
|
||||
}),
|
||||
('Statistics', {
|
||||
'fields': ('views_count',),
|
||||
'classes': ('collapse',)
|
||||
}),
|
||||
)
|
||||
|
||||
readonly_fields = ['views_count']
|
||||
|
||||
|
||||
@admin.register(BlogComment)
|
||||
class BlogCommentAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'post', 'is_approved', 'created_at']
|
||||
list_filter = ['is_approved', 'created_at']
|
||||
search_fields = ['name', 'email', 'content', 'post__title']
|
||||
ordering = ['-created_at']
|
||||
actions = ['approve_comments', 'disapprove_comments']
|
||||
|
||||
def approve_comments(self, request, queryset):
|
||||
queryset.update(is_approved=True)
|
||||
approve_comments.short_description = "Approve selected comments"
|
||||
|
||||
def disapprove_comments(self, request, queryset):
|
||||
queryset.update(is_approved=False)
|
||||
disapprove_comments.short_description = "Disapprove selected comments"
|
||||
Reference in New Issue
Block a user