diff news/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/news/admin.py@7854d75427af
children 6dba56996a21
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/news/admin.py	Sat May 05 17:10:48 2012 -0500
@@ -0,0 +1,69 @@
+"""
+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 news.models import PendingStory
+from news.models import Story
+from news.models import Category
+
+
+class CategoryAdmin(admin.ModelAdmin):
+    prepopulated_fields = {'slug': ("title", )}
+    list_display = ('title', 'slug')
+
+
+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', )
+    readonly_fields = ('update_date', )
+    raw_id_fields = ('submitter', )
+
+    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=pending_story.date_submitted,
+                    allow_comments=pending_story.allow_comments,
+                    tags=pending_story.tags,
+                    front_page_expiration=pending_story.front_page_expiration,
+                    priority=pending_story.priority,
+                    meta_description=pending_story.meta_description)
+            story.save()
+            pending_story.delete()
+
+        count = len(qs)
+        msg = "1 story" if count == 1 else "%d stories" % count
+        self.message_user(request, "%s approved." % msg)
+
+    approve_story.short_description = "Approve selected pending stories"
+
+    class Media:
+        js = ['js/news_admin.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'
+    readonly_fields = ('update_date', )
+    raw_id_fields = ('submitter', )
+
+    class Media:
+        js = ['js/news_admin.js'] + settings.GPP_THIRD_PARTY_JS['tiny_mce']
+
+
+admin.site.register(Category, CategoryAdmin)
+admin.site.register(Story, StoryAdmin)
+admin.site.register(PendingStory, PendingStoryAdmin)