|
|
|
|
@ -2,6 +2,8 @@ from django.contrib import admin |
|
|
|
|
from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval, FailedApiCall |
|
|
|
|
from django.db.models import Q |
|
|
|
|
from django.utils.translation import gettext_lazy as _ |
|
|
|
|
from django.utils import timezone |
|
|
|
|
from datetime import timedelta |
|
|
|
|
import uuid |
|
|
|
|
from enum import Enum |
|
|
|
|
|
|
|
|
|
@ -101,3 +103,36 @@ class SimpleIndexListFilter(admin.SimpleListFilter): |
|
|
|
|
return queryset.filter(index=self.value()) |
|
|
|
|
else: |
|
|
|
|
return queryset |
|
|
|
|
|
|
|
|
|
class StartDateRangeFilter(admin.SimpleListFilter): |
|
|
|
|
title = 'tournament time range' # displayed in the admin UI |
|
|
|
|
parameter_name = 'date_range' # URL parameter |
|
|
|
|
|
|
|
|
|
def lookups(self, request, model_admin): |
|
|
|
|
return ( |
|
|
|
|
('upcoming', 'Next 30 days'), |
|
|
|
|
('recent', 'Last 30 days'), |
|
|
|
|
('current', 'Current (±3 days)'), |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
def queryset(self, request, queryset): |
|
|
|
|
if not self.value(): |
|
|
|
|
return queryset |
|
|
|
|
|
|
|
|
|
today = timezone.now().date() |
|
|
|
|
|
|
|
|
|
if self.value() == 'upcoming': |
|
|
|
|
return queryset.filter( |
|
|
|
|
start_date__gte=today, |
|
|
|
|
start_date__lte=today + timedelta(days=30) |
|
|
|
|
) |
|
|
|
|
elif self.value() == 'recent': |
|
|
|
|
return queryset.filter( |
|
|
|
|
start_date__gte=today - timedelta(days=30), |
|
|
|
|
start_date__lte=today |
|
|
|
|
) |
|
|
|
|
elif self.value() == 'current': |
|
|
|
|
return queryset.filter( |
|
|
|
|
start_date__gte=today - timedelta(days=3), |
|
|
|
|
start_date__lte=today + timedelta(days=3) |
|
|
|
|
) |
|
|
|
|
|