Adds a generic wagtail_parent_filter for django admin
This commit is contained in:
parent
9dbccbee88
commit
f11f57eb4e
|
|
@ -1,20 +1,7 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from book.models import Book, Topic, Module
|
||||
|
||||
|
||||
class TopicListFilter(admin.SimpleListFilter):
|
||||
title = 'topic modules'
|
||||
parameter_name = 'topic_modules'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
return list((topic.slug, topic.title) for topic in Topic.objects.all())
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
filter_value = self.value()
|
||||
topic = Topic.objects.filter(slug=filter_value).first()
|
||||
if topic:
|
||||
return Module.get_topic_modules(topic)
|
||||
from core.wagtail_utils import wagtail_parent_filter
|
||||
|
||||
|
||||
@admin.register(Book)
|
||||
|
|
@ -25,9 +12,10 @@ class BookAdmin(admin.ModelAdmin):
|
|||
@admin.register(Topic)
|
||||
class TopicAdmin(admin.ModelAdmin):
|
||||
list_display = ('title', 'slug', 'teaser', 'description')
|
||||
list_filter = (wagtail_parent_filter(Book, Topic),)
|
||||
|
||||
|
||||
@admin.register(Module)
|
||||
class ModuleAdmin(admin.ModelAdmin):
|
||||
list_display = ('title', 'slug', 'meta_title', 'teaser')
|
||||
list_filter = (TopicListFilter, )
|
||||
list_filter = (wagtail_parent_filter(Topic, Module),)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
from django.contrib import admin
|
||||
|
||||
|
||||
def wagtail_parent_filter(parent_cls, child_cls):
|
||||
class ParentValueFilter(admin.SimpleListFilter):
|
||||
title = 'parent'
|
||||
parameter_name = 'parent'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
return list((parent.slug, parent.title) for parent in parent_cls.objects.all())
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
filter_value = self.value()
|
||||
parent = parent_cls.objects.filter(slug=filter_value).first()
|
||||
if parent:
|
||||
return child_cls.objects.filter(id__in=parent.get_child_ids()).live()
|
||||
|
||||
return ParentValueFilter
|
||||
Loading…
Reference in New Issue