mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-07-04 05:12:28 +00:00
WIP (Payments) Add PaymentFilter for filtering payment records 🚧
This commit is contained in:
18
billing/filters.py
Normal file
18
billing/filters.py
Normal file
@ -0,0 +1,18 @@
|
||||
import django_filters
|
||||
from .models import Payment
|
||||
|
||||
|
||||
class PaymentFilter(django_filters.FilterSet):
|
||||
amount = django_filters.NumericRangeFilter(field_name="amount")
|
||||
number_of_months = django_filters.NumericRangeFilter(field_name="number_of_months")
|
||||
paid = django_filters.BooleanFilter(field_name="paid")
|
||||
method = django_filters.ChoiceFilter(
|
||||
choices=Payment.PAYMENT_TYPES, lookup_expr="iexact"
|
||||
)
|
||||
mib_reference = django_filters.CharFilter(lookup_expr="icontains")
|
||||
paid_at = django_filters.DateFromToRangeFilter()
|
||||
created_at = django_filters.DateFromToRangeFilter()
|
||||
|
||||
class Meta:
|
||||
model = Payment
|
||||
fields = "__all__"
|
@ -6,6 +6,7 @@ from datetime import timedelta
|
||||
import requests
|
||||
from django.utils import timezone
|
||||
from django.utils.timezone import localtime
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from rest_framework import generics, status
|
||||
from rest_framework.response import Response
|
||||
|
||||
@ -16,6 +17,7 @@ import logging
|
||||
|
||||
from .models import Device, Payment
|
||||
from .serializers import PaymentSerializer, UpdatePaymentSerializer
|
||||
from .filters import PaymentFilter
|
||||
|
||||
env.read_env(os.path.join(BASE_DIR, ".env"))
|
||||
|
||||
@ -31,6 +33,9 @@ class InsufficientFundsError(Exception):
|
||||
class ListCreatePaymentView(StaffEditorPermissionMixin, generics.ListCreateAPIView):
|
||||
serializer_class = PaymentSerializer
|
||||
queryset = Payment.objects.all().select_related("user")
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = "__all__"
|
||||
filterset_class = PaymentFilter
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset()
|
||||
|
Reference in New Issue
Block a user