Source code for mezzanine.blog.admin

from __future__ import unicode_literals

from copy import deepcopy

from django.contrib import admin
from django.utils.translation import ugettext_lazy as _

from mezzanine.blog.models import BlogPost, BlogCategory
from mezzanine.conf import settings
from mezzanine.core.admin import (DisplayableAdmin, OwnableAdmin,
                                  BaseTranslationModelAdmin)
from mezzanine.twitter.admin import TweetableAdminMixin

blogpost_fieldsets = deepcopy(DisplayableAdmin.fieldsets)
blogpost_fieldsets[0][1]["fields"].insert(1, "categories")
blogpost_fieldsets[0][1]["fields"].extend(["content", "allow_comments"])
blogpost_list_display = ["title", "user", "status", "admin_link"]
if settings.BLOG_USE_FEATURED_IMAGE:
    blogpost_fieldsets[0][1]["fields"].insert(-2, "featured_image")
    blogpost_list_display.insert(0, "admin_thumb")
blogpost_fieldsets = list(blogpost_fieldsets)
blogpost_fieldsets.insert(1, (_("Other posts"), {
    "classes": ("collapse-closed",),
    "fields": ("related_posts",)}))
blogpost_list_filter = deepcopy(DisplayableAdmin.list_filter) + ("categories",)


[docs]class BlogPostAdmin(TweetableAdminMixin, DisplayableAdmin, OwnableAdmin): """ Admin class for blog posts. """ fieldsets = blogpost_fieldsets list_display = blogpost_list_display list_filter = blogpost_list_filter filter_horizontal = ("categories", "related_posts",)
[docs] def save_form(self, request, form, change): """ Super class ordering is important here - user must get saved first. """ OwnableAdmin.save_form(self, request, form, change) return DisplayableAdmin.save_form(self, request, form, change)
[docs]class BlogCategoryAdmin(BaseTranslationModelAdmin): """ Admin class for blog categories. Hides itself from the admin menu unless explicitly specified. """ fieldsets = ((None, {"fields": ("title",)}),)
[docs] def in_menu(self): """ Hide from the admin menu unless explicitly set in ``ADMIN_MENU_ORDER``. """ for (name, items) in settings.ADMIN_MENU_ORDER: if "blog.BlogCategory" in items: return True return False
admin.site.register(BlogPost, BlogPostAdmin) admin.site.register(BlogCategory, BlogCategoryAdmin)