Mercurial > public > sg101
diff messages/admin.py @ 810:4a4fa174a0ec
Private message refactor: adding ability to report PM's.
See also Bitbucket issue #57.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 06 Sep 2014 16:58:08 -0500 |
parents | ee87ea74d46b |
children |
line wrap: on
line diff
--- a/messages/admin.py Mon Sep 01 17:05:30 2014 -0500 +++ b/messages/admin.py Sat Sep 06 16:58:08 2014 -0500 @@ -2,17 +2,53 @@ 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 Message -from messages.models import Options +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', ) + list_display = ['sender', 'receiver', 'send_date', 'subject'] + raw_id_fields = ['sender', 'receiver'] + exclude = ['html'] date_hierarchy = 'send_date' - list_display_links = ('subject', ) + 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)