view gpp/comments/admin.py @ 479:32cec6cd8808

Refactor RateLimiter so that if Redis is not running, everything still runs normally (minus the rate limiting protection). My assumption that creating a Redis connection would throw an exception if Redis wasn't running was wrong. The exceptions actually occur when you issue a command. This is for #224.
author Brian Neal <bgneal@gmail.com>
date Sun, 25 Sep 2011 00:49:05 +0000
parents cdfa3ed59600
children
line wrap: on
line source
"""
This file contains the automatic admin site definitions for the comment models.
"""
from django.contrib import admin
from comments.models import Comment
from comments.models import CommentFlag
import bio.badges


class CommentAdmin(admin.ModelAdmin):
    fieldsets = (
        (None,
           {'fields': ('content_type', 'object_id', )}
        ),
        ('Content',
           {'fields': ('user', 'comment')}
        ),
        ('Metadata',
           {'fields': ('ip_address', 'is_public', 'is_removed')}
        ),
     )
    list_display = ('__unicode__', 'content_type', 'object_id', 'ip_address',
            'creation_date', 'is_public', 'not_removed')
    list_filter = ('creation_date', 'is_public', 'is_removed')
    date_hierarchy = 'creation_date'
    ordering = ('-creation_date', )
    search_fields = ('comment', 'user__username', 'ip_address')
    raw_id_fields = ('user', 'content_type')


class CommentFlagAdmin(admin.ModelAdmin):
    list_display = ('__unicode__', 'flag_date', 'get_comment_url')
    actions = ('accept_flags', )
    raw_id_fields = ('user', 'comment')

    def accept_flags(self, request, qs):
        """This admin action awards a security pin to the user who reported
        the comment and then deletes the flagged comment object.
        """
        for flag in qs:
            bio.badges.award_badge(bio.badges.SECURITY_PIN, flag.user)
            flag.delete()

    accept_flags.short_description = "Accept selected comment flags"


admin.site.register(Comment, CommentAdmin)
admin.site.register(CommentFlag, CommentFlagAdmin)