Added list filters
This commit is contained in:
parent
ddc946b021
commit
237e494751
|
@ -8,13 +8,14 @@ from orchestra.admin.utils import change_url
|
|||
from orchestra.contrib.accounts.actions import list_accounts
|
||||
from orchestra.contrib.accounts.admin import SelectAccountAdminMixin
|
||||
|
||||
from .filters import HasUserListFilter, HasDatabaseListFilter
|
||||
from .forms import DatabaseCreationForm, DatabaseUserChangeForm, DatabaseUserCreationForm
|
||||
from .models import Database, DatabaseUser
|
||||
|
||||
|
||||
class DatabaseAdmin(SelectAccountAdminMixin, ExtendedModelAdmin):
|
||||
list_display = ('name', 'type', 'display_users', 'account_link')
|
||||
list_filter = ('type',)
|
||||
list_filter = ('type', HasUserListFilter)
|
||||
search_fields = ('name', 'account__username')
|
||||
change_readonly_fields = ('name', 'type')
|
||||
extra = 1
|
||||
|
@ -72,7 +73,7 @@ class DatabaseAdmin(SelectAccountAdminMixin, ExtendedModelAdmin):
|
|||
|
||||
class DatabaseUserAdmin(SelectAccountAdminMixin, ChangePasswordAdminMixin, ExtendedModelAdmin):
|
||||
list_display = ('username', 'type', 'display_databases', 'account_link')
|
||||
list_filter = ('type',)
|
||||
list_filter = ('type', HasDatabaseListFilter)
|
||||
search_fields = ('username', 'account__username')
|
||||
form = DatabaseUserChangeForm
|
||||
add_form = DatabaseUserCreationForm
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
from django.contrib.admin import SimpleListFilter
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
class HasUserListFilter(SimpleListFilter):
|
||||
""" Filter addresses whether they have any db user or not """
|
||||
title = _("has user")
|
||||
parameter_name = 'has_user'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
return (
|
||||
('True', _("True")),
|
||||
('False', _("False")),
|
||||
)
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
if self.value() == 'True':
|
||||
return queryset.filter(users__isnull=False)
|
||||
elif self.value() == 'False':
|
||||
return queryset.filter(users__isnull=True)
|
||||
return queryset
|
||||
|
||||
|
||||
class HasDatabaseListFilter(HasUserListFilter):
|
||||
""" Filter addresses whether they have any db or not """
|
||||
title = _("has database")
|
||||
parameter_name = 'has_database'
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
if self.value() == 'True':
|
||||
return queryset.filter(databases__isnull=False)
|
||||
elif self.value() == 'False':
|
||||
return queryset.filter(databases__isnull=True)
|
||||
return queryset
|
|
@ -11,7 +11,7 @@ from orchestra.utils.html import get_on_site_link
|
|||
|
||||
from . import settings
|
||||
from .actions import view_zone, edit_records, set_soa
|
||||
from .filters import TopDomainListFilter
|
||||
from .filters import TopDomainListFilter, HasWebsiteFilter, HasAddressFilter
|
||||
from .forms import RecordForm, RecordInlineFormSet, BatchDomainCreationAdminForm
|
||||
from .models import Domain, Record
|
||||
|
||||
|
@ -55,7 +55,7 @@ class DomainAdmin(AccountAdminMixin, ExtendedModelAdmin):
|
|||
fields = ('name', 'account_link', 'display_websites')
|
||||
readonly_fields = ('account_link', 'top_link', 'display_websites', 'implicit_records')
|
||||
inlines = (RecordInline, DomainInline)
|
||||
list_filter = (TopDomainListFilter,)
|
||||
list_filter = (TopDomainListFilter, HasWebsiteFilter, HasAddressFilter)
|
||||
change_readonly_fields = ('name', 'serial')
|
||||
search_fields = ('name', 'account__username', 'records__value')
|
||||
add_form = BatchDomainCreationAdminForm
|
||||
|
|
|
@ -15,3 +15,41 @@ class TopDomainListFilter(SimpleListFilter):
|
|||
def queryset(self, request, queryset):
|
||||
if self.value() == 'True':
|
||||
return queryset.filter(top__isnull=True)
|
||||
|
||||
|
||||
class HasWebsiteFilter(SimpleListFilter):
|
||||
""" Filter addresses whether they have any websites or not """
|
||||
title = _("has websites")
|
||||
parameter_name = 'has_websites'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
return (
|
||||
('True', _("True")),
|
||||
('False', _("False")),
|
||||
)
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
if self.value() == 'True':
|
||||
return queryset.filter(websites__isnull=False)
|
||||
elif self.value() == 'False':
|
||||
return queryset.filter(websites__isnull=True)
|
||||
return queryset
|
||||
|
||||
|
||||
class HasAddressFilter(HasWebsiteFilter):
|
||||
""" Filter addresses whether they have any addresses or not """
|
||||
title = _("has addresses")
|
||||
parameter_name = 'has_addresses'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
return (
|
||||
('True', _("True")),
|
||||
('False', _("False")),
|
||||
)
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
if self.value() == 'True':
|
||||
return queryset.filter(addresses__isnull=False)
|
||||
elif self.value() == 'False':
|
||||
return queryset.filter(addresses__isnull=True)
|
||||
return queryset
|
||||
|
|
|
@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _
|
|||
|
||||
class HasMailboxListFilter(SimpleListFilter):
|
||||
""" Filter addresses whether they have any mailbox or not """
|
||||
title = _("Has mailbox")
|
||||
title = _("has mailbox")
|
||||
parameter_name = 'has_mailbox'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
|
@ -23,7 +23,7 @@ class HasMailboxListFilter(SimpleListFilter):
|
|||
|
||||
class HasForwardListFilter(HasMailboxListFilter):
|
||||
""" Filter addresses whether they have any mailbox or not """
|
||||
title = _("Has forward")
|
||||
title = _("has forward")
|
||||
parameter_name = 'has_forward'
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
|
@ -36,7 +36,7 @@ class HasForwardListFilter(HasMailboxListFilter):
|
|||
|
||||
class HasAddressListFilter(HasMailboxListFilter):
|
||||
""" Filter addresses whether they have any mailbox or not """
|
||||
title = _("Has address")
|
||||
title = _("has address")
|
||||
parameter_name = 'has_address'
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
|
|
|
@ -14,6 +14,7 @@ from orchestra.forms.widgets import DynamicHelpTextSelect
|
|||
from orchestra.utils.html import get_on_site_link
|
||||
|
||||
from .directives import SiteDirective
|
||||
from .filters import HasWebAppsListFilter
|
||||
from .forms import WebsiteAdminForm, WebsiteDirectiveInlineFormSet
|
||||
from .models import Content, Website, WebsiteDirective
|
||||
|
||||
|
@ -56,7 +57,7 @@ class ContentInline(AccountAdminMixin, admin.TabularInline):
|
|||
|
||||
class WebsiteAdmin(SelectAccountAdminMixin, ExtendedModelAdmin):
|
||||
list_display = ('name', 'display_domains', 'display_webapps', 'account_link')
|
||||
list_filter = ('protocol', 'is_active',)
|
||||
list_filter = ('protocol', 'is_active', HasWebAppsListFilter)
|
||||
change_readonly_fields = ('name',)
|
||||
inlines = [ContentInline, WebsiteDirectiveInline]
|
||||
filter_horizontal = ['domains']
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
from django.contrib.admin import SimpleListFilter
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
class HasWebAppsListFilter(SimpleListFilter):
|
||||
""" Filter addresses whether they have any webapp or not """
|
||||
title = _("has webapps")
|
||||
parameter_name = 'has_webapps'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
return (
|
||||
('True', _("True")),
|
||||
('False', _("False")),
|
||||
)
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
if self.value() == 'True':
|
||||
return queryset.filter(content__isnull=False)
|
||||
elif self.value() == 'False':
|
||||
return queryset.filter(content__isnull=True)
|
||||
return queryset
|
Loading…
Reference in New Issue