Add filter for user that have created an event

mailing
Laurent 2 months ago
parent bc792ed470
commit 42bdb3bfed
  1. 4
      tournaments/admin.py
  2. 19
      tournaments/filters.py

@ -11,7 +11,7 @@ from datetime import datetime, timedelta # Add this import
from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval, FailedApiCall, Log, DeviceToken, DrawLog, UnregisteredTeam, UnregisteredPlayer, Image
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .filters import TeamScoreTournamentListFilter, MatchTournamentListFilter, SimpleTournamentListFilter, MatchTypeListFilter, SimpleIndexListFilter, StartDateRangeFilter
from .filters import TeamScoreTournamentListFilter, MatchTournamentListFilter, SimpleTournamentListFilter, MatchTypeListFilter, SimpleIndexListFilter, StartDateRangeFilter, UserWithEventsFilter
from sync.admin import SyncedObjectAdmin
@ -23,7 +23,7 @@ class CustomUserAdmin(UserAdmin):
filter_horizontal = ('clubs',)
list_display = ['email', 'first_name', 'last_name', 'username', 'date_joined', 'latest_event_club_name', 'is_active', 'event_count', 'origin', 'registration_payment_mode', 'licence_id']
list_filter = ['is_active', 'origin']
list_filter = ['is_active', 'origin', UserWithEventsFilter]
ordering = ['-date_joined']
raw_id_fields = ['agents']
fieldsets = [

@ -1,6 +1,6 @@
from django.contrib import admin
from .models import Tournament, Match
from django.db.models import Q
from django.db.models import Q, Count
from django.utils.translation import gettext_lazy as _
from django.utils import timezone
from datetime import timedelta
@ -135,3 +135,20 @@ class StartDateRangeFilter(admin.SimpleListFilter):
start_date__gte=today - timedelta(days=3),
start_date__lte=today + timedelta(days=3)
)
class UserWithEventsFilter(admin.SimpleListFilter):
title = _('has events')
parameter_name = 'has_events'
def lookups(self, request, model_admin):
return (
('yes', _('Has events')),
('no', _('No events')),
)
def queryset(self, request, queryset):
if self.value() == 'yes':
return queryset.annotate(events_count=Count('events')).filter(events_count__gt=0)
elif self.value() == 'no':
return queryset.annotate(events_count=Count('events')).filter(events_count=0)
return queryset

Loading…
Cancel
Save