mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-07-07 18:26:30 +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")
|
||||
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
|
||||
|
@ -5,6 +5,10 @@ from devices.serializers import DeviceSerializer
|
||||
|
||||
class PaymentSerializer(serializers.ModelSerializer):
|
||||
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
|
||||
model = Payment
|
||||
|
Reference in New Issue
Block a user