view messages/admin.py @ 1096:d9cd3180c12c

More GCalendar V3 conversion in progress. Built a brand new post editor. It is hardcoded into GCalendar right now. We will make it more general in the future.
author Brian Neal <bgneal@gmail.com>
date Tue, 14 Jun 2016 21:16:09 -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)