forked from rc/aircox
add filters
This commit is contained in:
32
aircox/admin/filters.py
Normal file
32
aircox/admin/filters.py
Normal file
@ -0,0 +1,32 @@
|
||||
from django.contrib.admin import filters
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
__all__ = ('DateFieldFilter',)
|
||||
|
||||
|
||||
class DateFieldFilter(filters.FieldListFilter):
|
||||
template = 'admin/aircox/filters/date_filter.html'
|
||||
input_type = 'date'
|
||||
|
||||
def __init__(self, field, request, params, model, model_admin, field_path):
|
||||
self.field_generic = '%s__' % field_path
|
||||
self.date_params = {k: v for k, v in params.items()
|
||||
if k.startswith(self.field_generic)}
|
||||
|
||||
self.links = ((_('Exact'), self.field_generic + 'exact'),
|
||||
(_('Since'), self.field_generic + 'gte'),
|
||||
(_('Until'), self.field_generic + 'lte'))
|
||||
super().__init__(field, request, params, model, model_admin, field_path)
|
||||
|
||||
def expected_parameters(self):
|
||||
return [link[1] for link in self.links]
|
||||
|
||||
def choices(self, changelist):
|
||||
for link in self.links:
|
||||
yield {'label': link[0],
|
||||
'name': link[1],
|
||||
'value': self.date_params.get(link[1]),
|
||||
'type': self.input_type,}
|
||||
|
||||
|
@ -8,9 +8,10 @@ from django.utils.translation import gettext_lazy as _
|
||||
from adminsortable2.admin import SortableInlineAdminMixin
|
||||
|
||||
from ..models import Category, Comment, NavItem, Page, StaticPage
|
||||
from .filters import DateFieldFilter
|
||||
|
||||
|
||||
__all__ = ['CategoryAdmin', 'PageAdmin', 'NavItemInline']
|
||||
__all__ = ('CategoryAdmin', 'PageAdmin', 'NavItemInline')
|
||||
|
||||
|
||||
@admin.register(Category)
|
||||
@ -82,7 +83,7 @@ class PageAdmin(BasePageAdmin):
|
||||
|
||||
list_display = BasePageAdmin.list_display + ('category',)
|
||||
list_editable = BasePageAdmin.list_editable + ('category',)
|
||||
list_filter = BasePageAdmin.list_editable + ('category',)
|
||||
list_filter = BasePageAdmin.list_filter + ('category', ('pub_date', DateFieldFilter))
|
||||
search_fields = ('category__title',)
|
||||
fieldsets = deepcopy(BasePageAdmin.fieldsets)
|
||||
|
||||
|
Reference in New Issue
Block a user