annotate comments/admin.py @ 693:ad69236e8501

For issue #52, update many 3rd party Javascript libraries. Updated to jquery 1.10.2, jquery ui 1.10.3. This broke a lot of stuff. - Found a newer version of the jquery cycle all plugin (3.0.3). - Updated JPlayer to 2.4.0. - Updated to MarkItUp 1.1.14. This also required me to add multiline attributes set to true on various buttons in the markdown set. - As per a stackoverflow post, added some code to get multiline titles in a jQuery UI dialog. They removed that functionality but allow you to put it back. Tweaked the MarkItUp preview CSS to show blockquotes in italic. Did not update TinyMCE at this time. I'm not using the JQuery version and this version appears to work ok for now. What I should do is make a repo for MarkItUp and do a vendor branch thing so I don't have to futz around diffing directories to figure out if I'll lose changes when I update.
author Brian Neal <bgneal@gmail.com>
date Wed, 04 Sep 2013 19:55:20 -0500
parents be5b37719059
children
rev   line source
gremmie@1 1 """
gremmie@1 2 This file contains the automatic admin site definitions for the comment models.
gremmie@1 3 """
gremmie@1 4 from django.contrib import admin
gremmie@1 5 from comments.models import Comment
gremmie@1 6 from comments.models import CommentFlag
bgneal@671 7
bgneal@671 8 import ftfy
bgneal@671 9
bgneal@204 10 import bio.badges
bgneal@204 11
gremmie@1 12
bgneal@671 13
gremmie@1 14 class CommentAdmin(admin.ModelAdmin):
bgneal@671 15 fieldsets = [
bgneal@671 16 (None, {'fields': ['content_type', 'object_id']}),
bgneal@671 17 ('Content', {'fields': ['user', 'comment']}),
bgneal@671 18 ('Metadata', {'fields': ['ip_address', 'is_public', 'is_removed']}),
bgneal@671 19 ]
bgneal@671 20 list_display = ['__unicode__', 'content_type', 'object_id', 'ip_address',
bgneal@671 21 'creation_date', 'is_public', 'not_removed']
bgneal@671 22 list_filter = ['creation_date', 'is_public', 'is_removed']
gremmie@1 23 date_hierarchy = 'creation_date'
bgneal@671 24 ordering = ['-creation_date']
bgneal@671 25 search_fields = ['comment', 'user__username', 'ip_address']
bgneal@671 26 raw_id_fields = ['user', 'content_type']
bgneal@671 27 actions = ['fix_text']
bgneal@671 28
bgneal@671 29 def fix_text(self, request, qs):
bgneal@671 30 for comment in qs:
bgneal@671 31 comment.comment = ftfy.fix_text(comment.comment)
bgneal@671 32 comment.save()
bgneal@671 33
bgneal@671 34 count = len(qs)
bgneal@671 35 msg = "1 comment" if count == 1 else "%d comments" % count
bgneal@671 36 self.message_user(request, "Text fixed on {}".format(msg))
bgneal@671 37
bgneal@671 38 fix_text.short_description = "Fix text on selected comments"
gremmie@1 39
bgneal@204 40
gremmie@1 41 class CommentFlagAdmin(admin.ModelAdmin):
bgneal@13 42 list_display = ('__unicode__', 'flag_date', 'get_comment_url')
bgneal@204 43 actions = ('accept_flags', )
bgneal@365 44 raw_id_fields = ('user', 'comment')
bgneal@204 45
bgneal@204 46 def accept_flags(self, request, qs):
bgneal@204 47 """This admin action awards a security pin to the user who reported
bgneal@204 48 the comment and then deletes the flagged comment object.
bgneal@204 49 """
bgneal@204 50 for flag in qs:
bgneal@204 51 bio.badges.award_badge(bio.badges.SECURITY_PIN, flag.user)
bgneal@204 52 flag.delete()
bgneal@204 53
bgneal@204 54 accept_flags.short_description = "Accept selected comment flags"
bgneal@204 55
gremmie@1 56
gremmie@1 57 admin.site.register(Comment, CommentAdmin)
gremmie@1 58 admin.site.register(CommentFlag, CommentFlagAdmin)