|
@@ -36,6 +36,18 @@ class PaymentTypeFilter(admin.SimpleListFilter):
|
|
|
return queryset.filter(service__isnull=False)
|
|
|
|
|
|
|
|
|
+class PaymentMethodFilter(admin.SimpleListFilter):
|
|
|
+ title = 'méthode de paiement'
|
|
|
+ parameter_name = 'method'
|
|
|
+
|
|
|
+ def lookups(self, request, model_admin):
|
|
|
+ return PaymentUpdate.PAYMENT_CHOICES
|
|
|
+
|
|
|
+ def queryset(self, request, queryset):
|
|
|
+ if self.value() is not None:
|
|
|
+ return queryset.filter(payment_method=self.value())
|
|
|
+
|
|
|
+
|
|
|
class PendingPaymentFilter(admin.SimpleListFilter):
|
|
|
title = 'opérations en attente'
|
|
|
parameter_name = 'pending'
|
|
@@ -111,31 +123,31 @@ def prefix_search_field(prefix, field):
|
|
|
### ModelAdmin
|
|
|
|
|
|
class RecurringPaymentAdmin(admin.ModelAdmin):
|
|
|
- list_display = ('id', 'payment_type', 'payment_object_link', 'get_active', 'get_pending',)
|
|
|
+ list_display = ('id', 'payment_type', 'payment_object_link', 'get_active',)# 'get_pending',)
|
|
|
list_select_related = ('adhesion', 'service', 'service__service_type',)
|
|
|
inlines = (PendingPaymentUpdateInline, ValidatedPaymentUpdateInline,)
|
|
|
- list_filter = (PaymentTypeFilter, ActiveFilter, PendingPaymentFilter,)
|
|
|
+ list_filter = (PaymentTypeFilter, PaymentMethodFilter, ActiveFilter, PendingPaymentFilter,)
|
|
|
fields = ('payment_type', 'payment_object_link', 'debtor_link',)
|
|
|
readonly_fields = ('payment_type', 'payment_object_link', 'debtor_link',)
|
|
|
search_fields = \
|
|
|
tuple([prefix_search_field('adhesion', f) for f in AdhesionAdmin.search_fields]) \
|
|
|
+ tuple([prefix_search_field('service', f) for f in ServiceAdmin.search_fields])
|
|
|
|
|
|
- def get_queryset(self, request):
|
|
|
- qs = super().get_queryset(request)
|
|
|
- qs = qs.prefetch_related('updates')
|
|
|
- qs = qs.prefetch_related(
|
|
|
- models.Prefetch(
|
|
|
- 'updates',
|
|
|
- queryset=PaymentUpdate.objects.filter(validated=False),
|
|
|
- to_attr='pending_updates'
|
|
|
- )
|
|
|
- )
|
|
|
- return qs
|
|
|
-
|
|
|
- def get_pending(self, obj):
|
|
|
- return len(obj.pending_updates)
|
|
|
- get_pending.short_description = 'Opérations en attente'
|
|
|
+ #def get_queryset(self, request):
|
|
|
+ # qs = super().get_queryset(request)
|
|
|
+ # qs = qs.prefetch_related('updates')
|
|
|
+ # qs = qs.prefetch_related(
|
|
|
+ # models.Prefetch(
|
|
|
+ # 'updates',
|
|
|
+ # queryset=PaymentUpdate.objects.filter(validated=False),
|
|
|
+ # to_attr='pending_updates'
|
|
|
+ # )
|
|
|
+ # )
|
|
|
+ # return qs
|
|
|
+
|
|
|
+ #def get_pending(self, obj):
|
|
|
+ # return len(obj.pending_updates)
|
|
|
+ #get_pending.short_description = 'Opérations en attente'
|
|
|
|
|
|
def get_active(self, obj):
|
|
|
return obj.active
|