view gpp/news/admin.py @ 204:b4305e18d3af

Resolve ticket #74. Add user badges. Some extra credit was done here: also refactored how pending news, links, and downloads are handled.
author Brian Neal <bgneal@gmail.com>
date Sat, 01 May 2010 21:53:59 +0000
parents ca66189c7c44
children 65016249bf35
line wrap: on
line source
"""
This file contains the automatic admin site definitions for the News models.
"""
import datetime

from django.contrib import admin
from django.conf import settings
from django.core.cache import cache

from news.models import PendingStory
from news.models import Story
from news.models import Category

class PendingStoryAdmin(admin.ModelAdmin):
    list_display = ('title', 'date_submitted', 'submitter')
    list_filter = ('date_submitted', )
    search_fields = ('title', 'short_text', 'long_text')
    date_hierarchy = 'date_submitted'
    actions = ('approve_story', )

    def approve_story(self, request, qs):
        for pending_story in qs:
            story = Story(
                    title=pending_story.title,
                    submitter=pending_story.submitter,
                    category=pending_story.category,
                    short_text=pending_story.short_text,
                    long_text=pending_story.long_text,
                    date_submitted=datetime.datetime.now(),
                    allow_comments=pending_story.allow_comments,
                    tags=pending_story.tags)
            story.save()
            pending_story.delete()
            cache.delete('home_news')

    approve_story.short_description = "Approve selected pending stories"

    class Media:
        js = settings.GPP_THIRD_PARTY_JS['tiny_mce']


class StoryAdmin(admin.ModelAdmin):
    list_display = ('title', 'date_submitted', 'submitter', 'category')
    list_filter = ('date_submitted', 'category')
    search_fields = ('title', 'short_text', 'long_text')
    date_hierarchy = 'date_submitted'

    class Media:
        js = settings.GPP_THIRD_PARTY_JS['tiny_mce']


admin.site.register(Category)
admin.site.register(Story, StoryAdmin)
admin.site.register(PendingStory, PendingStoryAdmin)