Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
dj-kaos-utils / filters.py
Size: Mime:
from django.contrib import admin


class GenericBooleanAdminFilter(admin.SimpleListFilter):
    default_value = 'All'
    filter_kwargs = {
        'yes': None,
        'no': None,
    }

    def lookups(self, request, model_admin):
        return (
            ('yes', "Yes"),
            ('no', "No"),
        )

    def filter_yes(self, request, queryset):
        if self.filter_kwargs.get('yes'):
            return queryset.filter(**self.filter_kwargs['yes']).distinct()
        raise NotImplementedError

    def filter_no(self, request, queryset):
        if self.filter_kwargs.get('no'):
            return queryset.filter(**self.filter_kwargs['no']).distinct()
        raise NotImplementedError

    def queryset(self, request, queryset):
        value = self.value() or self.default_value
        if value == 'yes':
            return self.filter_yes(request, queryset)
        if value == 'no':
            return self.filter_no(request, queryset)

        return queryset