|
@@ -12,6 +12,7 @@ from functools import update_wrapper
|
|
from services.models import ServiceType
|
|
from services.models import ServiceType
|
|
from services.admin import ServiceAdmin
|
|
from services.admin import ServiceAdmin
|
|
from adhesions.admin import AdhesionAdmin
|
|
from adhesions.admin import AdhesionAdmin
|
|
|
|
+from djadhere.utils import ActiveFilter
|
|
from .models import RecurringPayment, PaymentUpdate
|
|
from .models import RecurringPayment, PaymentUpdate
|
|
from .utils import notify_payment_update
|
|
from .utils import notify_payment_update
|
|
|
|
|
|
@@ -35,30 +36,6 @@ class PaymentTypeFilter(admin.SimpleListFilter):
|
|
return queryset.filter(service__isnull=False)
|
|
return queryset.filter(service__isnull=False)
|
|
|
|
|
|
|
|
|
|
-class PaymentStatusFilter(admin.SimpleListFilter):
|
|
|
|
- title = 'actif'
|
|
|
|
- parameter_name = 'active'
|
|
|
|
-
|
|
|
|
- def lookups(self, request, model_admin):
|
|
|
|
- return (
|
|
|
|
- (0, 'Non renseigné'),
|
|
|
|
- (1, 'Inactif'),
|
|
|
|
- (2, 'Actif'),
|
|
|
|
- )
|
|
|
|
-
|
|
|
|
- def queryset(self, request, queryset):
|
|
|
|
- payments = PaymentUpdate.objects.filter(validated=True).order_by('payment', '-start')\
|
|
|
|
- .distinct('payment').values('payment_method', 'payment__pk')
|
|
|
|
- actives = filter(lambda p: p['payment_method'] != PaymentUpdate.STOP, payments)
|
|
|
|
- actives = map(lambda p: p['payment__pk'], actives)
|
|
|
|
- if self.value() == '0':
|
|
|
|
- return queryset.exclude(pk__in=actives).filter(updates__isnull=True)
|
|
|
|
- if self.value() == '1':
|
|
|
|
- return queryset.exclude(pk__in=actives).exclude(updates__isnull=True)
|
|
|
|
- if self.value() == '2':
|
|
|
|
- return queryset.filter(pk__in=actives)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
class PendingPaymentFilter(admin.SimpleListFilter):
|
|
class PendingPaymentFilter(admin.SimpleListFilter):
|
|
title = 'opérations en attente'
|
|
title = 'opérations en attente'
|
|
parameter_name = 'pending'
|
|
parameter_name = 'pending'
|
|
@@ -134,10 +111,10 @@ def prefix_search_field(prefix, field):
|
|
### ModelAdmin
|
|
### ModelAdmin
|
|
|
|
|
|
class RecurringPaymentAdmin(admin.ModelAdmin):
|
|
class RecurringPaymentAdmin(admin.ModelAdmin):
|
|
- list_display = ('id', 'payment_type', 'payment_object_link', 'get_active', 'get_last_validated_update', 'get_pending',)
|
|
|
|
|
|
+ list_display = ('id', 'payment_type', 'payment_object_link', 'get_active', 'get_pending',)
|
|
list_select_related = ('adhesion', 'service', 'service__service_type',)
|
|
list_select_related = ('adhesion', 'service', 'service__service_type',)
|
|
inlines = (PendingPaymentUpdateInline, ValidatedPaymentUpdateInline,)
|
|
inlines = (PendingPaymentUpdateInline, ValidatedPaymentUpdateInline,)
|
|
- list_filter = (PaymentTypeFilter, PaymentStatusFilter, PendingPaymentFilter,)
|
|
|
|
|
|
+ list_filter = (PaymentTypeFilter, ActiveFilter, PendingPaymentFilter,)
|
|
fields = ('payment_type', 'payment_object_link', 'debtor_link',)
|
|
fields = ('payment_type', 'payment_object_link', 'debtor_link',)
|
|
readonly_fields = ('payment_type', 'payment_object_link', 'debtor_link',)
|
|
readonly_fields = ('payment_type', 'payment_object_link', 'debtor_link',)
|
|
search_fields = \
|
|
search_fields = \
|