from rest_framework import viewsets from apps.api.serializers import ( TransactionSerializer, TransactionCategorySerializer, TransactionTagSerializer, InstallmentPlanSerializer, TransactionEntitySerializer, RecurringTransactionSerializer, ) from apps.transactions.models import ( Transaction, TransactionCategory, TransactionTag, InstallmentPlan, TransactionEntity, RecurringTransaction, ) from apps.rules.signals import transaction_updated, transaction_created class TransactionViewSet(viewsets.ModelViewSet): queryset = Transaction.objects.all() serializer_class = TransactionSerializer def perform_create(self, serializer): instance = serializer.save() transaction_created.send(sender=instance) def perform_update(self, serializer): instance = serializer.save() transaction_updated.send(sender=instance) def partial_update(self, request, *args, **kwargs): kwargs["partial"] = True return self.update(request, *args, **kwargs) class TransactionCategoryViewSet(viewsets.ModelViewSet): queryset = TransactionCategory.objects.all() serializer_class = TransactionCategorySerializer class TransactionTagViewSet(viewsets.ModelViewSet): queryset = TransactionTag.objects.all() serializer_class = TransactionTagSerializer class TransactionEntityViewSet(viewsets.ModelViewSet): queryset = TransactionEntity.objects.all() serializer_class = TransactionEntitySerializer class InstallmentPlanViewSet(viewsets.ModelViewSet): queryset = InstallmentPlan.objects.all() serializer_class = InstallmentPlanSerializer class RecurringTransactionViewSet(viewsets.ModelViewSet): queryset = RecurringTransaction.objects.all() serializer_class = RecurringTransactionSerializer