2020-01-21 06:35:58 +00:00
|
|
|
from django.forms import ModelForm
|
|
|
|
from django.urls import reverse_lazy
|
|
|
|
from django.utils.html import format_html
|
|
|
|
from django.utils.translation import gettext_lazy as _, ungettext
|
|
|
|
from reversion.admin import VersionAdmin
|
|
|
|
|
|
|
|
from judge.models import Comment
|
|
|
|
from judge.widgets import AdminHeavySelect2Widget, HeavyPreviewAdminPageDownWidget
|
|
|
|
|
|
|
|
|
|
|
|
class CommentForm(ModelForm):
|
|
|
|
class Meta:
|
|
|
|
widgets = {
|
2022-05-14 17:57:27 +00:00
|
|
|
"author": AdminHeavySelect2Widget(data_view="profile_select2"),
|
2020-01-21 06:35:58 +00:00
|
|
|
}
|
|
|
|
if HeavyPreviewAdminPageDownWidget is not None:
|
2022-05-14 17:57:27 +00:00
|
|
|
widgets["body"] = HeavyPreviewAdminPageDownWidget(
|
|
|
|
preview=reverse_lazy("comment_preview")
|
|
|
|
)
|
2020-01-21 06:35:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
class CommentAdmin(VersionAdmin):
|
|
|
|
fieldsets = (
|
2023-02-20 23:15:13 +00:00
|
|
|
(
|
|
|
|
None,
|
|
|
|
{
|
|
|
|
"fields": (
|
|
|
|
"author",
|
|
|
|
"parent",
|
|
|
|
"score",
|
|
|
|
"hidden",
|
|
|
|
"content_type",
|
|
|
|
"object_id",
|
|
|
|
)
|
|
|
|
},
|
|
|
|
),
|
2022-05-14 17:57:27 +00:00
|
|
|
("Content", {"fields": ("body",)}),
|
2020-01-21 06:35:58 +00:00
|
|
|
)
|
2023-02-20 23:15:13 +00:00
|
|
|
list_display = ["author", "linked_object", "time"]
|
|
|
|
search_fields = ["author__user__username", "body"]
|
2024-06-01 06:37:29 +00:00
|
|
|
readonly_fields = ["score", "parent"]
|
2022-05-14 17:57:27 +00:00
|
|
|
actions = ["hide_comment", "unhide_comment"]
|
|
|
|
list_filter = ["hidden"]
|
2020-01-21 06:35:58 +00:00
|
|
|
actions_on_top = True
|
|
|
|
actions_on_bottom = True
|
|
|
|
form = CommentForm
|
2022-05-14 17:57:27 +00:00
|
|
|
date_hierarchy = "time"
|
2020-01-21 06:35:58 +00:00
|
|
|
|
|
|
|
def get_queryset(self, request):
|
2022-05-14 17:57:27 +00:00
|
|
|
return Comment.objects.order_by("-time")
|
2020-01-21 06:35:58 +00:00
|
|
|
|
|
|
|
def hide_comment(self, request, queryset):
|
|
|
|
count = queryset.update(hidden=True)
|
2022-05-14 17:57:27 +00:00
|
|
|
self.message_user(
|
|
|
|
request,
|
|
|
|
ungettext(
|
|
|
|
"%d comment successfully hidden.",
|
|
|
|
"%d comments successfully hidden.",
|
|
|
|
count,
|
|
|
|
)
|
|
|
|
% count,
|
|
|
|
)
|
|
|
|
|
|
|
|
hide_comment.short_description = _("Hide comments")
|
2020-01-21 06:35:58 +00:00
|
|
|
|
|
|
|
def unhide_comment(self, request, queryset):
|
|
|
|
count = queryset.update(hidden=False)
|
2022-05-14 17:57:27 +00:00
|
|
|
self.message_user(
|
|
|
|
request,
|
|
|
|
ungettext(
|
|
|
|
"%d comment successfully unhidden.",
|
|
|
|
"%d comments successfully unhidden.",
|
|
|
|
count,
|
|
|
|
)
|
|
|
|
% count,
|
|
|
|
)
|
|
|
|
|
|
|
|
unhide_comment.short_description = _("Unhide comments")
|
2020-01-21 06:35:58 +00:00
|
|
|
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
|
|
super(CommentAdmin, self).save_model(request, obj, form, change)
|
|
|
|
if obj.hidden:
|
|
|
|
obj.get_descendants().update(hidden=obj.hidden)
|