X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/fd1a9915dd65789cccf27041a1f01cd4077273fc..9bc86f5a6542c5893ac94284da33162a7c7be2d6:/src/club/admin.py?ds=sidebyside diff --git a/src/club/admin.py b/src/club/admin.py index ce74ec61b..2ba842a81 100644 --- a/src/club/admin.py +++ b/src/club/admin.py @@ -5,6 +5,7 @@ import json from django.contrib import admin from django.db.models.functions import Now from django.db.models import Q +from django import forms from django.utils.html import conditional_escape from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ @@ -67,13 +68,53 @@ class ExpiredFilter(YesNoFilter): q = Q(expires_at__isnull=False, expires_at__lt=Now()) +class ScheduleForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['email'].required = False + self.fields['method'].required = False + self.fields['consent'].required = False + + class Meta: + model = models.Schedule + fields = '__all__' + + +class SourceFilter(admin.SimpleListFilter): + title = _('Source') # display title + parameter_name = 'source' + template = "admin/long_filter.html" + + def lookups(self, request, model_admin): + lookups = [ + (m, m) for m in + model_admin.model.objects.exclude(source='').values_list('source', flat=True).distinct()[:10] + ] + print(lookups) + return lookups + + def queryset(self, request, queryset): + return queryset + + #field_name = 'source' # name of the foreign key field + + + + class ScheduleAdmin(admin.ModelAdmin): + form = ScheduleForm + list_display = [ 'email', 'started_at', 'payed_at', 'expires_at', 'amount', 'monthly', 'yearly', 'is_cancelled', 'method' ] - search_fields = ['email'] - list_filter = ['is_cancelled', 'monthly', 'yearly', 'method', PayedFilter, ExpiredFilter, 'source'] + list_display_links = ['email', 'started_at'] + search_fields = ['email', 'source'] + list_filter = [ + 'is_cancelled', 'monthly', 'yearly', 'method', + PayedFilter, ExpiredFilter, + SourceFilter, + ] filter_horizontal = ['consent'] date_hierarchy = 'started_at' raw_id_fields = ['membership']