##// END OF EJS Templates
Added admin action to ban user that posted given messages
Added admin action to ban user that posted given messages

File last commit:

r968:29fca307 default
r968:29fca307 default
Show More
admin.py
59 lines | 1.6 KiB | text/x-python | PythonLexer
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', 'thread_new')
search_fields = ('id', 'title', 'text')
exclude = ('referenced_posts', 'refmap')
readonly_fields = ('poster_ip', 'thread_new')
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',)