mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-07-08 00:36:31 +00:00
feat(payment): add is_expired filter and serializer method for payment expiration tracking ✨
This commit is contained in:
@ -14,6 +14,18 @@ class PaymentFilter(django_filters.FilterSet):
|
|||||||
mib_reference = django_filters.CharFilter(lookup_expr="icontains")
|
mib_reference = django_filters.CharFilter(lookup_expr="icontains")
|
||||||
paid_at = django_filters.DateFromToRangeFilter()
|
paid_at = django_filters.DateFromToRangeFilter()
|
||||||
created_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:
|
class Meta:
|
||||||
model = Payment
|
model = Payment
|
||||||
|
@ -5,6 +5,10 @@ from devices.serializers import DeviceSerializer
|
|||||||
|
|
||||||
class PaymentSerializer(serializers.ModelSerializer):
|
class PaymentSerializer(serializers.ModelSerializer):
|
||||||
devices = DeviceSerializer(many=True, read_only=True)
|
devices = DeviceSerializer(many=True, read_only=True)
|
||||||
|
is_expired = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
def get_is_expired(self, obj):
|
||||||
|
return obj.is_expired
|
||||||
|
|
||||||
class Meta: # type: ignore
|
class Meta: # type: ignore
|
||||||
model = Payment
|
model = Payment
|
||||||
|
Reference in New Issue
Block a user