123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- 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",)
- 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",)
- 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)
- class BlogCategoryAdmin(BaseTranslationModelAdmin):
- """
- Admin class for blog categories. Hides itself from the admin menu
- unless explicitly specified.
- """
- fieldsets = ((None, {"fields": ("title",)}),)
- def has_module_permission(self, request):
- """
- 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)
|