diff --git a/tournaments/admin.py b/tournaments/admin.py index 6cd3369..5161543 100644 --- a/tournaments/admin.py +++ b/tournaments/admin.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, UserWithEventsFilter, UserWithPurchasesFilter +from .filters import TeamScoreTournamentListFilter, MatchTournamentListFilter, SimpleTournamentListFilter, MatchTypeListFilter, SimpleIndexListFilter, StartDateRangeFilter, UserWithEventsFilter, UserWithPurchasesFilter, UserWithProspectFilter 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', UserWithEventsFilter, UserWithPurchasesFilter] + list_filter = ['is_active', 'origin', UserWithEventsFilter, UserWithPurchasesFilter, UserWithProspectFilter] ordering = ['-date_joined'] raw_id_fields = ['agents'] fieldsets = [ diff --git a/tournaments/filters.py b/tournaments/filters.py index c75e49b..f55cfbb 100644 --- a/tournaments/filters.py +++ b/tournaments/filters.py @@ -169,3 +169,23 @@ class UserWithPurchasesFilter(admin.SimpleListFilter): elif self.value() == 'no': return queryset.annotate(purchases_count=Count('purchases')).filter(purchases_count=0) return queryset + +class UserWithProspectFilter(admin.SimpleListFilter): + title = _('has prospect') + parameter_name = 'has_prospect' + + def lookups(self, request, model_admin): + return ( + ('yes', _('Has prospect')), + ('no', _('No prospect')), + ) + + def queryset(self, request, queryset): + from biz.models import Prospect + if self.value() == 'yes': + prospect_emails = Prospect.objects.values_list('email', flat=True).filter(email__isnull=False) + return queryset.filter(email__in=prospect_emails) + elif self.value() == 'no': + prospect_emails = Prospect.objects.values_list('email', flat=True).filter(email__isnull=False) + return queryset.exclude(email__in=prospect_emails) + return queryset