From 4dc29d3286a34b8dc428d69a138b6eb6ac97461e Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 13 Aug 2015 10:48:09 +0200 Subject: Admin: add a filter when no category is available --- chimere/admin.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'chimere/admin.py') diff --git a/chimere/admin.py b/chimere/admin.py index b8414dc..47e7e25 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -25,6 +25,7 @@ import datetime from django import forms from django.conf import settings from django.contrib import admin, messages +from django.contrib.admin import SimpleListFilter from django.core.exceptions import ObjectDoesNotExist from django.db.models import Q from django.http import HttpResponse, HttpResponseRedirect @@ -176,13 +177,30 @@ class MultimediaInline(admin.TabularInline): ordering = ('order',) form = MultimediaFileAdminForm +class HasCategoriesListFilter(SimpleListFilter): + title = _('Has categories') + parameter_name = 'has_category' + + def lookups(self, request, model_admin): + return ( + ('true', _('Yes')), + ('false', _('No')), + ) + + def queryset(self, request, queryset): + if self.value() == 'false': + return queryset.filter(categories__isnull=True) + else: + return queryset.exclude(categories__isnull=True) + class MarkerAdmin(admin.ModelAdmin): """ Specialized the Point field. """ search_fields = ("name",) list_display = ('name', 'status', 'start_date', 'end_date') - list_filter = ('status', 'categories', 'start_date', 'end_date') + list_filter = ('status', 'categories', HasCategoriesListFilter, + 'start_date', 'end_date') actions = [validate, disable, managed_modified, export_to_kml, export_to_shapefile, export_to_csv] exclude = ['submiter_session_key', 'import_key', 'import_version', -- cgit v1.2.3 From 9d0ff9f26f5b71c2e3d02451e8240472b29a2134 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 13 Aug 2015 11:48:05 +0200 Subject: Admin: fix has_category doesn't have to filter by true by default --- chimere/admin.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'chimere/admin.py') diff --git a/chimere/admin.py b/chimere/admin.py index 47e7e25..e94f22f 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -190,8 +190,9 @@ class HasCategoriesListFilter(SimpleListFilter): def queryset(self, request, queryset): if self.value() == 'false': return queryset.filter(categories__isnull=True) - else: + elif self.value() == 'true': return queryset.exclude(categories__isnull=True) + return queryset class MarkerAdmin(admin.ModelAdmin): """ -- cgit v1.2.3