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,6 +1,7 @@
from .article import ArticleAdmin
from .episode import DiffusionAdmin, EpisodeAdmin
from .log import LogAdmin
from .page import PageAdmin, StaticPageAdmin
from .program import ProgramAdmin, ScheduleAdmin, StreamAdmin
from .sound import SoundAdmin, TrackAdmin
from .station import StationAdmin

View File

@ -11,8 +11,7 @@ __all__ = ['ArticleAdmin']
@admin.register(Article)
class ArticleAdmin(PageAdmin):
list_filter = PageAdmin.list_filter
search_fields = PageAdmin.search_fields + ['parent__title']
search_fields = PageAdmin.search_fields + ('parent__title',)
# TODO: readonly field

View File

@ -56,7 +56,7 @@ class EpisodeAdmin(PageAdmin):
form = EpisodeAdminForm
list_display = PageAdmin.list_display
list_filter = PageAdmin.list_filter
search_fields = PageAdmin.search_fields + ['parent__title']
search_fields = PageAdmin.search_fields + ('parent__title',)
# readonly_fields = ('parent',)
inlines = [TracksInline, SoundInline, DiffusionInline]

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