annotate messages/admin.py @ 917:0365fdbb4d78

Fix app conflict with messages. Django's messages app label conflicts with our messages app. We can't easily rename our label as that will make us rename database tables. Since our app came first we'll just customize Django messages label. For Django 1.7.7 upgrade.
author Brian Neal <bgneal@gmail.com>
date Mon, 06 Apr 2015 20:02:25 -0500
parents 4a4fa174a0ec
children
rev   line source
gremmie@1 1 """
gremmie@1 2 This file contains the automatic admin site definitions for the Message models.
gremmie@1 3 """
bgneal@299 4 from django.contrib import admin
bgneal@810 5 from django.core.urlresolvers import reverse
gremmie@1 6
bgneal@810 7 from messages.models import Flag, Message, Options
bgneal@810 8 import bio.badges
gremmie@1 9
bgneal@299 10
bgneal@299 11 class MessageAdmin(admin.ModelAdmin):
bgneal@810 12 list_display = ['sender', 'receiver', 'send_date', 'subject']
bgneal@810 13 raw_id_fields = ['sender', 'receiver']
bgneal@810 14 exclude = ['html']
bgneal@299 15 date_hierarchy = 'send_date'
bgneal@810 16 list_display_links = ['subject']
bgneal@299 17
bgneal@810 18
bgneal@810 19 class FlagAdmin(admin.ModelAdmin):
bgneal@810 20 list_display = ['__unicode__', 'flag_date', 'message_link']
bgneal@810 21 date_hierarchy = 'flag_date'
bgneal@810 22 list_select_related = True
bgneal@810 23 readonly_fields = ['message', 'flag_date', 'comments', 'message_text']
bgneal@810 24 actions = ['accept_flags']
bgneal@810 25
bgneal@810 26 def message_link(self, obj):
bgneal@810 27 return '<a href="{}">Message</a>'.format(
bgneal@810 28 reverse('admin:messages_message_change', args=[obj.message.id]))
bgneal@810 29 message_link.allow_tags = True
bgneal@810 30 message_link.short_description = 'Message'
bgneal@810 31
bgneal@810 32 def message_text(self, obj):
bgneal@810 33 return obj.message.html
bgneal@810 34 message_text.allow_tags = True
bgneal@810 35 message_text.short_description = 'Message text'
bgneal@810 36
bgneal@810 37 def accept_flags(self, request, qs):
bgneal@810 38 """This admin action awards a security pin to the user who reported the
bgneal@810 39 message and then deletes the flag object.
bgneal@810 40
bgneal@810 41 """
bgneal@810 42 count = qs.count()
bgneal@810 43 for flag in qs:
bgneal@810 44 bio.badges.award_badge(bio.badges.SECURITY_PIN, flag.message.receiver)
bgneal@810 45 flag.delete()
bgneal@810 46
bgneal@810 47 self.message_user(request,
bgneal@810 48 "%s flag(s) acknowledged. You may want to mark users as spammers now." % count)
bgneal@810 49
bgneal@810 50 accept_flags.short_description = "Accept selected flags"
bgneal@810 51
bgneal@810 52 admin.site.register(Flag, FlagAdmin)
bgneal@299 53 admin.site.register(Message, MessageAdmin)
gremmie@1 54 admin.site.register(Options)