view messages/admin.py @ 1056:ac41aecf797d

Make use of next param on login link.
author Brian Neal <bgneal@gmail.com>
date Thu, 17 Mar 2016 20:03:20 -0500
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)