feat(payment): add is_expired filter and serializer method for payment expiration tracking

This commit is contained in:
2025-07-06 21:23:56 +05:00
parent 6bc2d71a0e
commit 4f794571e9
2 changed files with 16 additions and 0 deletions

View File

@ -14,6 +14,18 @@ class PaymentFilter(django_filters.FilterSet):
mib_reference = django_filters.CharFilter(lookup_expr="icontains")
paid_at = django_filters.DateFromToRangeFilter()
created_at = django_filters.DateFromToRangeFilter()
is_expired = django_filters.BooleanFilter(method="filter_is_expired")
def filter_is_expired(self, queryset, name, value):
"""
Filter payments based on whether they are expired or not
"""
now = timezone.now()
queryset = queryset.filter(paid=False)
if value:
return queryset.filter(expires_at__isnull=False, expires_at__lt=now)
else:
return queryset.filter(Q(expires_at__isnull=True) | Q(expires_at__gte=now))
class Meta:
model = Payment