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] class CommentImageInline(admin.StackedInline): model = CommentImage
[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(Comment) class CommentAdminModel(RolePermissionsModelAdmin): """Admin class for comment model""" list_display = ["post", "author", "text", "is_deleted", "is_reported"] inlines = [CommentImageInline] search_fields = ["text"] list_filter = ["post__categories", "post__tags", "author"]
[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 + ("post", "author") return readonly_fields
[docs] @admin.register(CommentImage) class CommentImageModel(RolePermissionsModelAdmin): """Admin class for comment model"""
[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"""