annotate gpp/news/admin.py @ 318:c550933ff5b6

Fix a bug where you'd get an error when trying to delete a forum thread (topic does not exist). Apparently when you call topic.delete() the posts would get deleted, but the signal handler for each one would run, and it would try to update the topic's post count or something, but the topic was gone? Reworked the code a bit and explicitly delete the posts first. I also added a sync() call on the parent forum since post counts were not getting adjusted.
author Brian Neal <bgneal@gmail.com>
date Sat, 05 Feb 2011 21:46:52 +0000
parents d424b8bae71d
children 7c7201f942fe
rev   line source
gremmie@1 1 """
gremmie@1 2 This file contains the automatic admin site definitions for the News models.
gremmie@1 3 """
bgneal@204 4 import datetime
gremmie@1 5
gremmie@1 6 from django.contrib import admin
bgneal@7 7 from django.conf import settings
bgneal@7 8
gremmie@1 9 from news.models import PendingStory
gremmie@1 10 from news.models import Story
gremmie@1 11 from news.models import Category
gremmie@1 12
bgneal@240 13
bgneal@240 14 class CategoryAdmin(admin.ModelAdmin):
bgneal@240 15 prepopulated_fields = {'slug': ("title", )}
bgneal@240 16 list_display = ('title', 'slug')
bgneal@240 17
bgneal@240 18
gremmie@1 19 class PendingStoryAdmin(admin.ModelAdmin):
bgneal@204 20 list_display = ('title', 'date_submitted', 'submitter')
bgneal@204 21 list_filter = ('date_submitted', )
bgneal@204 22 search_fields = ('title', 'short_text', 'long_text')
bgneal@204 23 date_hierarchy = 'date_submitted'
bgneal@204 24 actions = ('approve_story', )
bgneal@277 25 readonly_fields = ('update_date', )
gremmie@1 26
bgneal@204 27 def approve_story(self, request, qs):
bgneal@204 28 for pending_story in qs:
bgneal@204 29 story = Story(
bgneal@204 30 title=pending_story.title,
bgneal@204 31 submitter=pending_story.submitter,
bgneal@204 32 category=pending_story.category,
bgneal@204 33 short_text=pending_story.short_text,
bgneal@204 34 long_text=pending_story.long_text,
bgneal@277 35 date_submitted=pending_story.date_submitted,
bgneal@204 36 allow_comments=pending_story.allow_comments,
bgneal@218 37 tags=pending_story.tags,
bgneal@218 38 front_page_expiration=pending_story.front_page_expiration)
bgneal@204 39 story.save()
bgneal@204 40 pending_story.delete()
bgneal@204 41
bgneal@204 42 approve_story.short_description = "Approve selected pending stories"
bgneal@204 43
bgneal@204 44 class Media:
bgneal@204 45 js = settings.GPP_THIRD_PARTY_JS['tiny_mce']
gremmie@1 46
gremmie@1 47
gremmie@1 48 class StoryAdmin(admin.ModelAdmin):
bgneal@204 49 list_display = ('title', 'date_submitted', 'submitter', 'category')
bgneal@204 50 list_filter = ('date_submitted', 'category')
bgneal@204 51 search_fields = ('title', 'short_text', 'long_text')
bgneal@204 52 date_hierarchy = 'date_submitted'
bgneal@277 53 readonly_fields = ('update_date', )
gremmie@1 54
bgneal@204 55 class Media:
bgneal@204 56 js = settings.GPP_THIRD_PARTY_JS['tiny_mce']
gremmie@1 57
gremmie@1 58
bgneal@240 59 admin.site.register(Category, CategoryAdmin)
gremmie@1 60 admin.site.register(Story, StoryAdmin)
gremmie@1 61 admin.site.register(PendingStory, PendingStoryAdmin)