Mercurial > public > sg101
diff forums/admin.py @ 581:ee87ea74d46b
For Django 1.4, rearranged project structure for new manage.py.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 05 May 2012 17:10:48 -0500 |
parents | gpp/forums/admin.py@98b373ca09f3 |
children | 3e1905e523be |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forums/admin.py Sat May 05 17:10:48 2012 -0500 @@ -0,0 +1,109 @@ +""" +This file contains the admin definitions for the forums application. +""" +from django.contrib import admin + +from forums.models import Category +from forums.models import Forum +from forums.models import Topic +from forums.models import Post +from forums.models import FlaggedPost +from forums.models import ForumLastVisit +from forums.models import TopicLastVisit +from forums.signals import (notify_new_topic, notify_updated_topic, + notify_new_post, notify_updated_post) + +import bio.badges + + +class CategoryAdmin(admin.ModelAdmin): + list_display = ('name', 'position', ) + list_editable = ('position', ) + prepopulated_fields = { 'slug': ('name', ) } + save_on_top = True + + +class ForumAdmin(admin.ModelAdmin): + list_display = ('name', 'category', 'position', 'topic_count', 'post_count') + list_editable = ('position', ) + prepopulated_fields = { 'slug': ('name', ) } + raw_id_fields = ('last_post', ) + ordering = ('category', ) + save_on_top = True + + +class TopicAdmin(admin.ModelAdmin): + list_display = ('name', 'forum', 'creation_date', 'update_date', 'user', 'sticky', 'locked', + 'post_count') + raw_id_fields = ('user', 'last_post', 'subscribers', 'bookmarkers') + search_fields = ('name', ) + date_hierarchy = 'creation_date' + list_filter = ('creation_date', 'update_date', ) + save_on_top = True + + # override save_model() to update the search index + def save_model(self, request, obj, form, change): + obj.save() + + if change: + notify_updated_topic(obj) + else: + notify_new_topic(obj) + + +class PostAdmin(admin.ModelAdmin): + list_display = ('user', 'creation_date', 'update_date', 'user_ip', 'summary') + raw_id_fields = ('topic', 'user', ) + exclude = ('html', ) + search_fields = ('body', ) + date_hierarchy = 'creation_date' + list_filter = ('creation_date', 'update_date', ) + ordering = ('-creation_date', ) + save_on_top = True + + def queryset(self, request): + return Post.objects.select_related('user') + + # override save_model() to update the search index + def save_model(self, request, obj, form, change): + obj.save() + + if change: + notify_updated_post(obj) + else: + notify_new_post(obj) + + +class FlaggedPostAdmin(admin.ModelAdmin): + list_display = ['__unicode__', 'flag_date', 'get_post_url'] + actions = ['accept_flags'] + raw_id_fields = ['post', 'user', ] + + def accept_flags(self, request, qs): + """This admin action awards a security pin to the user who reported + the post and then deletes the flagged post object. + """ + for flag in qs: + bio.badges.award_badge(bio.badges.SECURITY_PIN, flag.user) + flag.delete() + + accept_flags.short_description = "Accept selected flagged posts" + + +class ForumLastVisitAdmin(admin.ModelAdmin): + raw_id_fields = ('user', 'forum') + list_display = ('user', 'forum', 'begin_date', 'end_date') + + +class TopicLastVisitAdmin(admin.ModelAdmin): + raw_id_fields = ('user', 'topic') + list_display = ('user', 'topic', 'last_visit') + + +admin.site.register(Category, CategoryAdmin) +admin.site.register(Forum, ForumAdmin) +admin.site.register(Topic, TopicAdmin) +admin.site.register(Post, PostAdmin) +admin.site.register(FlaggedPost, FlaggedPostAdmin) +admin.site.register(ForumLastVisit, ForumLastVisitAdmin) +admin.site.register(TopicLastVisit, TopicLastVisitAdmin)