Newer
Older
from django.contrib.admin import SimpleListFilter
from django.db.models import Count, F
from django.shortcuts import render
from django.utils.translation import gettext_lazy as _
from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, Room, AKSlot
admin.site.register(AKTrack)
admin.site.register(AKTag)
admin.site.register(AKRequirement)
class WishFilter(SimpleListFilter):
title = _("Wish") # a label for our filter
parameter_name = 'wishes' # you can put anything here
def lookups(self, request, model_admin):
# This is where you create filter options; we have two:
return [
('WISH', _("Is wish")),
('NO_WISH', _("Is not a wish")),
]
def queryset(self, request, queryset):
annotated_queryset = queryset.annotate(owner_count=Count(F('owners')))
if self.value() == 'NO_WISH':
return annotated_queryset.filter(owner_count__gt=0)
if self.value() == 'WISH':
return annotated_queryset.filter(owner_count=0)
return queryset
list_display = ['name', 'short_name', 'category', 'is_wish']
list_filter = ['category', WishFilter]
def wiki_export(self, request, queryset):
return render(request,
'admin/AKModel/wiki_export.html',
context={"AKs": queryset})
wiki_export.short_description = _("Export to wiki syntax")
is_wish.boolean = True
admin.site.register(AK, AKAdmin)