From 1b8e95286601872a9bac8186976b8e01bcfe052c Mon Sep 17 00:00:00 2001 From: erichhasl Date: Wed, 11 Oct 2017 12:35:31 +0200 Subject: [PATCH] add custom filter that has a default field --- jdav_web/members/admin.py | 41 ++++++++++++++++++- .../members/locale/de/LC_MESSAGES/django.po | 30 ++++++++++---- 2 files changed, 61 insertions(+), 10 deletions(-) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index fdd5d50..13b9214 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -21,13 +21,52 @@ from django.conf import settings from easy_select2 import apply_select2 +class RegistrationFilter(admin.SimpleListFilter): + title = _('Registration complete') + parameter_name = 'registered' + default_value = ('All', None) + + def lookups(self, request, model_admin): + return ( + ('True', _('True')), + ('False', _('False')), + ('All', _('All')) + ) + + def queryset(self, request, queryset): + if self.value() == 'True': + return queryset.filter(registered=True) + elif self.value() == 'False': + return queryset.filter(registered=False) + elif self.value() is None: + if self.default_value[1] is None: + return queryset + else: + return queryset.filter(registered=self.default_value[1]) + elif self.value() == 'All': + return queryset + + def choices(self, cl): + for lookup, title in self.lookup_choices: + yield { + 'selected': + self.value() == lookup or + (self.value() is None and lookup == self.default_value[0]), + 'query_string': cl.get_query_string({ + self.parameter_name: + lookup, + }, []), + 'display': title + } + + # Register your models here. class MemberAdmin(admin.ModelAdmin): fields = ['prename', 'lastname', 'email', 'email_parents', 'street', 'town', 'phone_number', 'phone_number_parents', 'birth_date', 'group', 'gets_newsletter', 'registered', 'registration_form', 'comments'] list_display = ('name', 'birth_date', 'get_group', 'gets_newsletter', 'registered', 'created', 'comments') - list_filter = ('group', 'gets_newsletter', 'registered') + list_filter = ('group', 'gets_newsletter', RegistrationFilter) formfield_overrides = { ManyToManyField: {'widget': forms.CheckboxSelectMultiple}, ForeignKey: {'widget': apply_select2(forms.Select)} diff --git a/jdav_web/members/locale/de/LC_MESSAGES/django.po b/jdav_web/members/locale/de/LC_MESSAGES/django.po index 9fa8986..761db2e 100644 --- a/jdav_web/members/locale/de/LC_MESSAGES/django.po +++ b/jdav_web/members/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-11 11:50+0200\n" +"POT-Creation-Date: 2017-10-11 12:34+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,19 +18,35 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: admin.py:59 +#: admin.py:25 models.py:67 +msgid "Registration complete" +msgstr "Anmeldung vollständig" + +#: admin.py:31 +msgid "True" +msgstr "Ja" + +#: admin.py:32 +msgid "False" +msgstr "Nein" + +#: admin.py:33 +msgid "All" +msgstr "Alle" + +#: admin.py:98 msgid "Difficulty" msgstr "Schwierigkeit" -#: admin.py:63 +#: admin.py:102 msgid "Tour type" msgstr "Art der Tour" -#: admin.py:200 +#: admin.py:239 msgid "Convert to PDF" msgstr "Kriseninterventionsliste erstellen" -#: admin.py:306 +#: admin.py:345 msgid "Generate overview" msgstr "Hinweise für Jugendleiter erstellen" @@ -114,10 +130,6 @@ msgstr "Kommentare" msgid "created" msgstr "erstellt" -#: models.py:67 -msgid "Registration complete" -msgstr "Anmeldung vollständig" - #: models.py:68 msgid "registration form" msgstr "Anmeldeformular"