view messages/admin.py @ 861:e4f8d87c3d30

Configure Markdown logger to reduce noise in logs. Markdown is logging at the INFO level whenever it loads an extension. This looks like it has been fixed in master at GitHub. But until then we will explicitly configure the MARKDOWN logger to log at WARNING or higher.
author Brian Neal <bgneal@gmail.com>
date Mon, 01 Dec 2014 18:36:27 -0600
parents 4a4fa174a0ec
children
line wrap: on
line source
"""
This file contains the automatic admin site definitions for the Message models.
"""
from django.contrib import admin
from django.core.urlresolvers import reverse

from messages.models import Flag, Message, Options
import bio.badges


class MessageAdmin(admin.ModelAdmin):
    list_display = ['sender', 'receiver', 'send_date', 'subject']
    raw_id_fields = ['sender', 'receiver']
    exclude = ['html']
    date_hierarchy = 'send_date'
    list_display_links = ['subject']


class FlagAdmin(admin.ModelAdmin):
    list_display = ['__unicode__', 'flag_date', 'message_link']
    date_hierarchy = 'flag_date'
    list_select_related = True
    readonly_fields = ['message', 'flag_date', 'comments', 'message_text']
    actions = ['accept_flags']

    def message_link(self, obj):
        return '<a href="{}">Message</a>'.format(
                reverse('admin:messages_message_change', args=[obj.message.id]))
    message_link.allow_tags = True
    message_link.short_description = 'Message'

    def message_text(self, obj):
        return obj.message.html
    message_text.allow_tags = True
    message_text.short_description = 'Message text'

    def accept_flags(self, request, qs):
        """This admin action awards a security pin to the user who reported the
        message and then deletes the flag object.

        """
        count = qs.count()
        for flag in qs:
            bio.badges.award_badge(bio.badges.SECURITY_PIN, flag.message.receiver)
            flag.delete()

        self.message_user(request,
            "%s flag(s) acknowledged. You may want to mark users as spammers now." % count)

    accept_flags.short_description = "Accept selected flags"

admin.site.register(Flag, FlagAdmin)
admin.site.register(Message, MessageAdmin)
admin.site.register(Options)