Merge branch 'develop-1.0' into fix-1.0-41

This commit is contained in:
Thomas Kairos
2022-05-21 15:42:13 +02:00
7 changed files with 113 additions and 5 deletions

View File

@ -1,3 +1,4 @@
from . import filters
from .article import ArticleAdmin
from .episode import DiffusionAdmin, EpisodeAdmin
from .log import LogAdmin

61
aircox/admin/filters.py Normal file
View File

@ -0,0 +1,61 @@
from django.db import models
from django.contrib.admin import filters
from django.utils.translation import gettext_lazy as _
from django.utils.http import urlencode
__all__ = ('DateFieldFilter', 'DateTimeField')
class DateFieldFilter(filters.FieldListFilter):
""" Display date input """
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)}
# links as: (label, param, input_type|None, value)
self.links = [(_('Exact'), self.field_generic + 'exact', self.input_type),
(_('Since'), self.field_generic + 'gte', self.input_type),
(_('Until'), self.field_generic + 'lte', self.input_type)]
if field.null:
self.links.insert(0, (_('None'), self.field_generic + 'isnull', None, '1'))
self.query_attrs = {k:v for k,v in request.GET.items()
if k not in self.date_params}
self.query_string = urlencode(self.query_attrs)
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):
yield {'label': _('Any'),
'type': None,
'query_string': self.query_string}
for link in self.links:
value = len(link) > 3 and link[3] or self.date_params.get(link[1])
yield {
'label': link[0], 'name': link[1], 'value': value,
'type': link[2],
'query_attrs': self.query_attrs,
'query_string': urlencode({link[1]: value}) + '&' + self.query_string
if value else self.query_string,
}
class DateTimeFieldFilter(DateFieldFilter):
""" Display datetime input """
input_type = 'datetime-local'
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)

View File

@ -10,7 +10,7 @@ from adminsortable2.admin import SortableInlineAdminMixin
from ..models import Category, Comment, NavItem, Page, StaticPage
__all__ = ['CategoryAdmin', 'PageAdmin', 'NavItemInline']
__all__ = ('CategoryAdmin', 'PageAdmin', 'NavItemInline')
@admin.register(Category)
@ -82,7 +82,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')
search_fields = ('category__title',)
fieldsets = deepcopy(BasePageAdmin.fieldsets)