annotate news/admin.py @ 887:9a15f7c27526

Actually save model object upon change. This commit was tested on the comments model. Additional logging added. Added check for Markdown image references. Added TODOs after observing behavior on comments.
author Brian Neal <bgneal@gmail.com>
date Tue, 03 Feb 2015 21:09:44 -0600
parents 6dba56996a21
children 8386a8ebcbc7
rev   line source
gremmie@1 1 """
gremmie@1 2 This file contains the automatic admin site definitions for the News models.
gremmie@1 3 """
gremmie@1 4 from django.contrib import admin
bgneal@7 5 from django.conf import settings
bgneal@7 6
gremmie@1 7 from news.models import PendingStory
gremmie@1 8 from news.models import Story
gremmie@1 9 from news.models import Category
gremmie@1 10
bgneal@669 11 import ftfy
bgneal@669 12
bgneal@240 13
bgneal@240 14 class CategoryAdmin(admin.ModelAdmin):
bgneal@240 15 prepopulated_fields = {'slug': ("title", )}
bgneal@669 16 list_display = ['title', 'slug']
bgneal@240 17
bgneal@240 18
gremmie@1 19 class PendingStoryAdmin(admin.ModelAdmin):
bgneal@669 20 list_display = ['title', 'date_submitted', 'submitter']
bgneal@669 21 list_filter = ['date_submitted']
bgneal@669 22 search_fields = ['title', 'short_text', 'long_text']
bgneal@204 23 date_hierarchy = 'date_submitted'
bgneal@669 24 actions = ['approve_story']
bgneal@669 25 readonly_fields = ['update_date']
bgneal@669 26 raw_id_fields = ['submitter']
gremmie@1 27
bgneal@204 28 def approve_story(self, request, qs):
bgneal@204 29 for pending_story in qs:
bgneal@204 30 story = Story(
bgneal@204 31 title=pending_story.title,
bgneal@204 32 submitter=pending_story.submitter,
bgneal@204 33 category=pending_story.category,
bgneal@204 34 short_text=pending_story.short_text,
bgneal@204 35 long_text=pending_story.long_text,
bgneal@277 36 date_submitted=pending_story.date_submitted,
bgneal@204 37 allow_comments=pending_story.allow_comments,
bgneal@218 38 tags=pending_story.tags,
bgneal@462 39 front_page_expiration=pending_story.front_page_expiration,
bgneal@486 40 priority=pending_story.priority,
bgneal@486 41 meta_description=pending_story.meta_description)
bgneal@204 42 story.save()
bgneal@204 43 pending_story.delete()
bgneal@204 44
bgneal@398 45 count = len(qs)
bgneal@398 46 msg = "1 story" if count == 1 else "%d stories" % count
bgneal@398 47 self.message_user(request, "%s approved." % msg)
bgneal@398 48
bgneal@204 49 approve_story.short_description = "Approve selected pending stories"
bgneal@204 50
bgneal@204 51 class Media:
bgneal@486 52 js = ['js/news_admin.js'] + settings.GPP_THIRD_PARTY_JS['tiny_mce']
gremmie@1 53
gremmie@1 54
gremmie@1 55 class StoryAdmin(admin.ModelAdmin):
bgneal@669 56 list_display = ['title', 'date_submitted', 'submitter', 'category']
bgneal@669 57 list_filter = ['date_submitted', 'category']
bgneal@669 58 search_fields = ['title', 'short_text', 'long_text']
bgneal@204 59 date_hierarchy = 'date_submitted'
bgneal@669 60 readonly_fields = ['update_date']
bgneal@669 61 raw_id_fields = ['submitter']
bgneal@669 62 actions = ['fix_text']
bgneal@669 63
bgneal@669 64 def fix_text(self, request, qs):
bgneal@669 65 for story in qs:
bgneal@669 66 story.title = ftfy.fix_text(story.title)
bgneal@669 67 story.short_text = ftfy.fix_text(story.short_text)
bgneal@669 68 story.long_text = ftfy.fix_text(story.long_text)
bgneal@669 69 story.save()
bgneal@669 70
bgneal@669 71 count = len(qs)
bgneal@669 72 msg = "1 story" if count == 1 else "%d stories" % count
bgneal@669 73 self.message_user(request, "Text fixed on {}".format(msg))
bgneal@669 74
bgneal@669 75 fix_text.short_description = "Fix text on selected stories"
gremmie@1 76
bgneal@204 77 class Media:
bgneal@486 78 js = ['js/news_admin.js'] + settings.GPP_THIRD_PARTY_JS['tiny_mce']
gremmie@1 79
gremmie@1 80
bgneal@240 81 admin.site.register(Category, CategoryAdmin)
gremmie@1 82 admin.site.register(Story, StoryAdmin)
gremmie@1 83 admin.site.register(PendingStory, PendingStoryAdmin)