Files
interchan/board/admin.py

85 lines
1.8 KiB
Python
Raw Normal View History

from django.contrib import admin
from django.urls import reverse
from django.utils.safestring import mark_safe
from board.models import (
Ban,
BanTemplate,
Board,
Post,
RangeBan,
ReportReason,
ReportRecord,
)
#
# Admin sites
#
@admin.register(Board)
class BoardAdmin(admin.ModelAdmin):
pass
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
pass
@admin.register(ReportReason)
class ReportReasonAdmin(admin.ModelAdmin):
pass
@admin.register(ReportRecord)
class ReportRecordAdmin(admin.ModelAdmin):
ordering = (
"-urgent",
"-weight",
)
readonly_fields = ("post", "weight", "urgent")
list_display = ("post_id", "post_thumbnail", "post_body", "create_ban")
save_as = False
def post_id(self, obj):
return obj.post.id
def post_thumbnail(self, obj):
if obj.post.thumbnail:
return mark_safe(f'<img src="{obj.post.thumbnail.url}" />')
else:
return None
def post_body(self, obj):
html = ""
if obj.urgent:
html += '<div class="urgent">'
else:
html += "<div>"
if obj.post.subject:
html += f"<p><strong>{obj.post.subject}</strong></p>"
html += f"<p>{obj.post.text}</p>"
html += "</div>"
return mark_safe(html)
def create_ban(self, obj):
post = obj.post
board = obj.post.board
ban_url = reverse("board:ban_create", kwargs={"url": board.url, "id": post.id})
return mark_safe(
f'<a href="#" data-ban-url="{ban_url}" class="ban_link">Ban</a>'
)
@admin.register(RangeBan)
class RangeBanAdmin(admin.ModelAdmin):
pass
@admin.register(Ban)
class BanAdmin(admin.ModelAdmin):
pass
@admin.register(BanTemplate)
class BanTemplateAdmin(admin.ModelAdmin):
ordering = ("board__url", "name")