38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
|
|
import datetime
|
|
|
|
from django.conf import settings
|
|
from django.contrib import admin
|
|
from django.utils import timezone
|
|
from django.utils.dateformat import format as django_dateformat
|
|
from dateutil import rrule
|
|
|
|
__all__ = [
|
|
'DateListFilter'
|
|
]
|
|
|
|
|
|
class DateListFilter(admin.SimpleListFilter):
|
|
title = 'Дата'
|
|
parameter_name = 'date'
|
|
|
|
def lookups(self, request, model_admin):
|
|
today = datetime.datetime.today()
|
|
date_start = today - datetime.timedelta(days=3)
|
|
date_end = today + datetime.timedelta(days=2)
|
|
|
|
lookups = []
|
|
for date in rrule.rrule(rrule.DAILY, dtstart=date_start, until=date_end):
|
|
postfix = ''
|
|
if date.date() == today.date():
|
|
postfix = ' (сегодня)'
|
|
lookups.append([
|
|
date.strftime('%Y-%m-%d'), f"{django_dateformat(date, 'D d E')}{postfix}"
|
|
])
|
|
|
|
return lookups
|
|
|
|
def queryset(self, request, queryset):
|
|
if self.value():
|
|
return queryset.filter(date=self.value())
|