from django.contrib import admin from boards.models import Post, Tag, Ban, Thread from django.utils.translation import ugettext_lazy as _ @admin.register(Post) class PostAdmin(admin.ModelAdmin): list_display = ('id', 'title', 'text') list_filter = ('pub_time',) search_fields = ('id', 'title', 'text') exclude = ('referenced_posts', 'refmap') readonly_fields = ('poster_ip', 'threads', 'thread', 'images') def ban_poster(self, request, queryset): bans = 0 for post in queryset: poster_ip = post.poster_ip ban, created = Ban.objects.get_or_create(ip=poster_ip) if created: bans += 1 self.message_user(request, _('{} posters were banned').format(bans)) actions = ['ban_poster'] @admin.register(Tag) class TagAdmin(admin.ModelAdmin): def thread_count(self, obj: Tag) -> int: return obj.get_thread_count() list_display = ('name', 'thread_count') search_fields = ('name',) @admin.register(Thread) class ThreadAdmin(admin.ModelAdmin): def title(self, obj: Thread) -> str: return obj.get_opening_post().get_title() def reply_count(self, obj: Thread) -> int: return obj.get_reply_count() def ip(self, obj: Thread): return obj.get_opening_post().poster_ip list_display = ('id', 'title', 'reply_count', 'archived', 'ip') list_filter = ('bump_time', 'archived', 'bumpable') search_fields = ('id', 'title') filter_horizontal = ('tags',) @admin.register(Ban) class BanAdmin(admin.ModelAdmin): list_display = ('ip', 'can_read') list_filter = ('can_read',) search_fields = ('ip',)