diff --git a/aircox/admin/__init__.py b/aircox/admin/__init__.py index ce5dc4a..5fe7001 100644 --- a/aircox/admin/__init__.py +++ b/aircox/admin/__init__.py @@ -1,3 +1,4 @@ +from . import filters from .article import ArticleAdmin from .episode import DiffusionAdmin, EpisodeAdmin from .log import LogAdmin diff --git a/aircox/admin/filters.py b/aircox/admin/filters.py index fa0bc12..129d777 100644 --- a/aircox/admin/filters.py +++ b/aircox/admin/filters.py @@ -1,11 +1,13 @@ +from django.db import models from django.contrib.admin import filters from django.utils.translation import gettext_lazy as _ -__all__ = ('DateFieldFilter',) +__all__ = ('DateFieldFilter', 'DateTimeField') class DateFieldFilter(filters.FieldListFilter): + """ Display date input """ template = 'admin/aircox/filters/date_filter.html' input_type = 'date' @@ -13,7 +15,6 @@ class DateFieldFilter(filters.FieldListFilter): 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')) @@ -30,3 +31,14 @@ class DateFieldFilter(filters.FieldListFilter): 'type': self.input_type,} +class DateTimeFieldFilter(DateFieldFilter): + """ Display datetime input """ + input_type = 'datetime' + + +filters.FieldListFilter.register( + lambda f: isinstance(f, models.DateField), DateFieldFilter, take_priority=True) + +filters.FieldListFilter.register( + lambda f: isinstance(f, models.DateTimeField), DateTimeFieldFilter, take_priority=True) + diff --git a/aircox/admin/page.py b/aircox/admin/page.py index 9b666cd..24a7bb8 100644 --- a/aircox/admin/page.py +++ b/aircox/admin/page.py @@ -8,7 +8,6 @@ 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') @@ -83,7 +82,7 @@ class PageAdmin(BasePageAdmin): list_display = BasePageAdmin.list_display + ('category',) list_editable = BasePageAdmin.list_editable + ('category',) - list_filter = BasePageAdmin.list_filter + ('category', ('pub_date', DateFieldFilter)) + list_filter = BasePageAdmin.list_filter + ('category', 'pub_date') search_fields = ('category__title',) fieldsets = deepcopy(BasePageAdmin.fieldsets) diff --git a/aircox/models/page.py b/aircox/models/page.py index 8939508..cfaf2d2 100644 --- a/aircox/models/page.py +++ b/aircox/models/page.py @@ -161,7 +161,8 @@ class Page(BasePage): Category, models.SET_NULL, verbose_name=_('category'), blank=True, null=True, db_index=True ) - pub_date = models.DateTimeField(blank=True, null=True) + pub_date = models.DateTimeField( + _('publication date'), blank=True, null=True, db_index=True) featured = models.BooleanField( _('featured'), default=False, ) diff --git a/aircox/templates/admin/aircox/filters/date_filter.html b/aircox/templates/admin/aircox/filters/date_filter.html index edea836..e600c4b 100644 --- a/aircox/templates/admin/aircox/filters/date_filter.html +++ b/aircox/templates/admin/aircox/filters/date_filter.html @@ -1,20 +1,18 @@ {% extends "./filter.html" %} {% load static %} + + {% block content %} -{% with choices|first as choice %} -