start static pages

This commit is contained in:
bkfox
2020-05-25 16:53:18 +02:00
parent c457ce873c
commit a59c4a3d5c
9 changed files with 117 additions and 37 deletions

View File

@ -1,4 +1,4 @@
import urllib
from copy import deepcopy
from django.contrib import admin
from django.http import QueryDict
@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _
from adminsortable2.admin import SortableInlineAdminMixin
from ..models import Category, NavItem, Page
from ..models import Category, NavItem, Page, StaticPage
__all__ = ['CategoryAdmin', 'PageAdmin', 'NavItemInline']
@ -22,25 +22,24 @@ class CategoryAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
# limit category choice
class PageAdmin(admin.ModelAdmin):
list_display = ('cover_thumb', 'title', 'status', 'category', 'parent')
class BasePageAdmin(admin.ModelAdmin):
list_display = ('cover_thumb', 'title', 'status', 'parent')
list_display_links = ('cover_thumb', 'title')
list_editable = ('status', 'category')
list_filter = ('status', 'category')
list_editable = ('status',)
list_filter = ('status',)
prepopulated_fields = {"slug": ("title",)}
# prepopulate fields using changelist's filters
prepopulated_filters = ('parent',)
search_fields = ['title', 'category__title']
search_fields = ('title',)
fieldsets = [
('', {
'fields': ['title', 'slug', 'category', 'cover', 'content'],
'fields': ['title', 'slug', 'cover', 'content'],
}),
(_('Publication Settings'), {
'fields': ['featured', 'allow_comments', 'status', 'parent'],
'classes': ('collapse',),
'fields': ['status', 'parent'],
# 'classes': ('collapse',),
}),
]
@ -59,10 +58,16 @@ class PageAdmin(admin.ModelAdmin):
def get_common_context(self, query, extra_context=None):
extra_context = extra_context or {}
parent = query.get('parent', None)
if parent is not None:
extra_context['parent'] = Page.objects.get_subclass(id=parent)
extra_context['parent'] = None if parent is None else \
Page.objects.get_subclass(id=parent)
return extra_context
def render_change_form(self, request, context, *args, **kwargs):
if context['original'] and not 'parent' in context:
context['parent'] = context['original'].parent
return super().render_change_form(request, context, *args, **kwargs)
def add_view(self, request, form_url='', extra_context=None):
filters = QueryDict(request.GET.get('_changelist_filters', ''))
extra_context = self.get_common_context(filters, extra_context)
@ -73,6 +78,27 @@ class PageAdmin(admin.ModelAdmin):
return super().changelist_view(request, extra_context)
class PageAdmin(BasePageAdmin):
list_display = BasePageAdmin.list_display + ('category',)
list_editable = BasePageAdmin.list_editable + ('category',)
list_filter = BasePageAdmin.list_editable + ('category',)
search_fields = ('category__title',)
fieldsets = deepcopy(BasePageAdmin.fieldsets)
fieldsets[0][1]['fields'].insert(fieldsets[0][1]['fields'].index('slug') + 1, 'category')
fieldsets[1][1]['fields'] += ('featured', 'allow_comments')
@admin.register(StaticPage)
class StaticPageAdmin(BasePageAdmin):
list_display = BasePageAdmin.list_display + ('view','menu_title')
list_editable = BasePageAdmin.list_editable + ('menu_title',)
fieldsets = deepcopy(BasePageAdmin.fieldsets)
fieldsets[0][1]['fields'].insert(fieldsets[0][1]['fields'].index('slug') + 1, 'menu_title')
fieldsets[1][1]['fields'] += ('view',)
class NavItemInline(SortableInlineAdminMixin, admin.TabularInline):
model = NavItem