Source code for apps.posts.admin
from django.contrib import admin
from apps.posts.models import Comment, CommentImage, Favorite, Like, Post, PostMedia
from common.admin import RolePermissionsModelAdmin
[docs]
class PostMediaAdminInline(admin.StackedInline):
model = PostMedia
[docs]
@admin.register(Post)
class PostAdminModel(RolePermissionsModelAdmin):
"""Admin class for post model"""
list_display = [
"pk",
"title",
"author",
"display_tags",
"display_categories",
"created_at",
"is_reported",
"is_deleted",
]
list_filter = ["categories", "tags", "author"]
search_fields = ["title"]
inlines = [PostMediaAdminInline]
[docs]
@admin.display(description="Tags")
def display_tags(self, obj):
return ", ".join([tag.name for tag in obj.tags.all()])
[docs]
@admin.display(description="Categories")
def display_categories(self, obj):
return ", ".join([category.name for category in obj.categories.all()])
[docs]
def get_readonly_fields(self, request, obj=None):
readonly_fields = super().get_readonly_fields(request, obj)
if not request.user.is_superuser:
return readonly_fields + ("likes_quantity", "favorites_quantity", "views_quantity", "author")
return readonly_fields
[docs]
@admin.register(Like)
class LikeAdminModel(RolePermissionsModelAdmin):
"""Admin class for like model"""
list_display = ["post", "author"]
[docs]
@admin.register(PostMedia)
class PostMediaModel(RolePermissionsModelAdmin):
"""Admin class for post media model"""
list_display = ("post", "type", "created_at")
list_filter = ("type", "created_at")
read_only_fields = ["formatted_path", "preview_path"]
[docs]
@admin.register(Favorite)
class FavoriteAdminModel(RolePermissionsModelAdmin):
"""Admin class for favorite post"""