forked from rc/aircox
		
	admin filter for date and datetime using <input>
This commit is contained in:
		@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					from . import filters
 | 
				
			||||||
from .article import ArticleAdmin
 | 
					from .article import ArticleAdmin
 | 
				
			||||||
from .episode import DiffusionAdmin, EpisodeAdmin
 | 
					from .episode import DiffusionAdmin, EpisodeAdmin
 | 
				
			||||||
from .log import LogAdmin
 | 
					from .log import LogAdmin
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,13 @@
 | 
				
			|||||||
 | 
					from django.db import models
 | 
				
			||||||
from django.contrib.admin import filters
 | 
					from django.contrib.admin import filters
 | 
				
			||||||
from django.utils.translation import gettext_lazy as _
 | 
					from django.utils.translation import gettext_lazy as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__all__ = ('DateFieldFilter',)
 | 
					__all__ = ('DateFieldFilter', 'DateTimeField')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DateFieldFilter(filters.FieldListFilter):
 | 
					class DateFieldFilter(filters.FieldListFilter):
 | 
				
			||||||
 | 
					    """ Display date input """
 | 
				
			||||||
    template = 'admin/aircox/filters/date_filter.html'
 | 
					    template = 'admin/aircox/filters/date_filter.html'
 | 
				
			||||||
    input_type = 'date'
 | 
					    input_type = 'date'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -13,7 +15,6 @@ class DateFieldFilter(filters.FieldListFilter):
 | 
				
			|||||||
        self.field_generic = '%s__' % field_path
 | 
					        self.field_generic = '%s__' % field_path
 | 
				
			||||||
        self.date_params = {k: v for k, v in params.items()
 | 
					        self.date_params = {k: v for k, v in params.items()
 | 
				
			||||||
                                if k.startswith(self.field_generic)}
 | 
					                                if k.startswith(self.field_generic)}
 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.links = ((_('Exact'), self.field_generic + 'exact'),
 | 
					        self.links = ((_('Exact'), self.field_generic + 'exact'),
 | 
				
			||||||
                      (_('Since'), self.field_generic + 'gte'),
 | 
					                      (_('Since'), self.field_generic + 'gte'),
 | 
				
			||||||
                      (_('Until'), self.field_generic + 'lte'))
 | 
					                      (_('Until'), self.field_generic + 'lte'))
 | 
				
			||||||
@ -30,3 +31,14 @@ class DateFieldFilter(filters.FieldListFilter):
 | 
				
			|||||||
                   'type': self.input_type,}
 | 
					                   '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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,6 @@ from django.utils.translation import gettext_lazy as _
 | 
				
			|||||||
from adminsortable2.admin import SortableInlineAdminMixin
 | 
					from adminsortable2.admin import SortableInlineAdminMixin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from ..models import Category, Comment, NavItem, Page, StaticPage
 | 
					from ..models import Category, Comment, NavItem, Page, StaticPage
 | 
				
			||||||
from .filters import DateFieldFilter
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__all__ = ('CategoryAdmin', 'PageAdmin', 'NavItemInline')
 | 
					__all__ = ('CategoryAdmin', 'PageAdmin', 'NavItemInline')
 | 
				
			||||||
@ -83,7 +82,7 @@ class PageAdmin(BasePageAdmin):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    list_display = BasePageAdmin.list_display + ('category',)
 | 
					    list_display = BasePageAdmin.list_display + ('category',)
 | 
				
			||||||
    list_editable = BasePageAdmin.list_editable + ('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',)
 | 
					    search_fields = ('category__title',)
 | 
				
			||||||
    fieldsets = deepcopy(BasePageAdmin.fieldsets)
 | 
					    fieldsets = deepcopy(BasePageAdmin.fieldsets)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -161,7 +161,8 @@ class Page(BasePage):
 | 
				
			|||||||
        Category, models.SET_NULL,
 | 
					        Category, models.SET_NULL,
 | 
				
			||||||
        verbose_name=_('category'), blank=True, null=True, db_index=True
 | 
					        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 = models.BooleanField(
 | 
				
			||||||
        _('featured'), default=False,
 | 
					        _('featured'), default=False,
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
				
			|||||||
@ -1,20 +1,18 @@
 | 
				
			|||||||
{% extends "./filter.html" %}
 | 
					{% extends "./filter.html" %}
 | 
				
			||||||
{% load static %}
 | 
					{% load static %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
{% with choices|first as choice %}
 | 
					<ul>
 | 
				
			||||||
<form method="GET">
 | 
					    {% for choice in choices %}
 | 
				
			||||||
    <ul>
 | 
					    <div>
 | 
				
			||||||
        {% for choice in choices %}
 | 
					        <form method="GET">
 | 
				
			||||||
        <li>
 | 
					            <label for="filter-{{ choice.name }}">{{ choice.label }}: </label>
 | 
				
			||||||
            <label for="{{ choice.name }}">{{ choice.label }}</label>
 | 
					            <input id="filter-{{ choice.name }}" type="{{ choice.type }}" name="{{ choice.name }}"
 | 
				
			||||||
            <input type="{{ choice.type }}" name="{{ choice.name }}"
 | 
					 | 
				
			||||||
                value="{{ choice.value }}" {{ choice.extra }} />
 | 
					                value="{{ choice.value }}" {{ choice.extra }} />
 | 
				
			||||||
        </li>
 | 
					            <button class="button"><img src="{% static "admin/img/search.svg" %}" /></button>
 | 
				
			||||||
        {% endfor %}
 | 
					        </form>
 | 
				
			||||||
    </ul>
 | 
					 | 
				
			||||||
    <div style="text-align: right;">
 | 
					 | 
				
			||||||
        <input type="submit" value="Chercher">
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</form>
 | 
					    {% endfor %}
 | 
				
			||||||
{% endwith %}
 | 
					</ul>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user