gremmie@1: """ gremmie@1: This file contains the automatic admin site definitions for the comment models. gremmie@1: """ gremmie@1: from django.contrib import admin gremmie@1: from comments.models import Comment gremmie@1: from comments.models import CommentFlag bgneal@671: bgneal@671: import ftfy bgneal@671: bgneal@204: import bio.badges bgneal@204: gremmie@1: bgneal@671: gremmie@1: class CommentAdmin(admin.ModelAdmin): bgneal@671: fieldsets = [ bgneal@671: (None, {'fields': ['content_type', 'object_id']}), bgneal@671: ('Content', {'fields': ['user', 'comment']}), bgneal@671: ('Metadata', {'fields': ['ip_address', 'is_public', 'is_removed']}), bgneal@671: ] bgneal@671: list_display = ['__unicode__', 'content_type', 'object_id', 'ip_address', bgneal@671: 'creation_date', 'is_public', 'not_removed'] bgneal@671: list_filter = ['creation_date', 'is_public', 'is_removed'] gremmie@1: date_hierarchy = 'creation_date' bgneal@671: ordering = ['-creation_date'] bgneal@671: search_fields = ['comment', 'user__username', 'ip_address'] bgneal@671: raw_id_fields = ['user', 'content_type'] bgneal@671: actions = ['fix_text'] bgneal@671: bgneal@671: def fix_text(self, request, qs): bgneal@671: for comment in qs: bgneal@671: comment.comment = ftfy.fix_text(comment.comment) bgneal@671: comment.save() bgneal@671: bgneal@671: count = len(qs) bgneal@671: msg = "1 comment" if count == 1 else "%d comments" % count bgneal@671: self.message_user(request, "Text fixed on {}".format(msg)) bgneal@671: bgneal@671: fix_text.short_description = "Fix text on selected comments" gremmie@1: bgneal@204: gremmie@1: class CommentFlagAdmin(admin.ModelAdmin): bgneal@13: list_display = ('__unicode__', 'flag_date', 'get_comment_url') bgneal@204: actions = ('accept_flags', ) bgneal@365: raw_id_fields = ('user', 'comment') bgneal@204: bgneal@204: def accept_flags(self, request, qs): bgneal@204: """This admin action awards a security pin to the user who reported bgneal@204: the comment and then deletes the flagged comment object. bgneal@204: """ bgneal@204: for flag in qs: bgneal@204: bio.badges.award_badge(bio.badges.SECURITY_PIN, flag.user) bgneal@204: flag.delete() bgneal@204: bgneal@204: accept_flags.short_description = "Accept selected comment flags" bgneal@204: gremmie@1: gremmie@1: admin.site.register(Comment, CommentAdmin) gremmie@1: admin.site.register(CommentFlag, CommentFlagAdmin)