diff --git a/apps/users/serializers.py b/apps/users/serializers.py index a8247bb..0b11cc3 100644 --- a/apps/users/serializers.py +++ b/apps/users/serializers.py @@ -27,7 +27,6 @@ class AccountSerializer(serializers.ModelSerializer): "first_name", "last_name", 'name', - 'balance', 'avatar', 'iban', 'iban_verified', @@ -39,7 +38,7 @@ class AccountSerializer(serializers.ModelSerializer): 'postal_code', 'address', ) - read_only_fields = ['uuid', 'balance', 'email', 'phone_number', 'iban_verified', 'province_name', 'city_name',] + read_only_fields = ['uuid', 'email', 'phone_number', 'iban_verified', 'province_name', 'city_name',] class RequestOTPSerializer(serializers.ModelSerializer): diff --git a/apps/wallet/serializers.py b/apps/wallet/serializers.py index 715b79f..c714718 100755 --- a/apps/wallet/serializers.py +++ b/apps/wallet/serializers.py @@ -5,6 +5,7 @@ from rest_framework.exceptions import APIException from apps.users.serializers import PublicUserSerializer from .models import Transaction +from ..users.models import User class TransactionSerializer(serializers.ModelSerializer): @@ -99,3 +100,9 @@ class WithdrawSerializer(serializers.ModelSerializer): raise APIException('duplicate uuid') return transaction + + +class WalletSerializer(serializers.ModelSerializer): + class Meta: + model=User + fields = ['balance'] diff --git a/apps/wallet/urls.py b/apps/wallet/urls.py index d8ee1ff..68434cd 100644 --- a/apps/wallet/urls.py +++ b/apps/wallet/urls.py @@ -1,6 +1,7 @@ from django.urls import path from .views import TransactionList, TransactionDetail, TransactionPay, TransactionReceipt, \ - WithdrawVerify, WithdrawSubmit, DepositSubmit, DepositVerify, TransactionListView, TransactionDetailView + WithdrawVerify, WithdrawSubmit, DepositSubmit, DepositVerify, TransactionListView, TransactionDetailView, \ + DefaultWalletBalanceView app_name = "wallet" @@ -8,6 +9,8 @@ urlpatterns = [ path('transactions/', TransactionListView.as_view(), name='transaction_list'), path('transactions/', TransactionDetailView.as_view(), name='transaction_detail'), + path('api/wallet/default/balance', DefaultWalletBalanceView.as_view(), name='default_wallet_balance_api'), + path('api/transactions/', TransactionList.as_view(), name='transaction_list_api'), path('api/transactions/', TransactionDetail.as_view(), name='transaction_detail_api'), path('api/transactions//pay', TransactionPay.as_view(), name='transaction_pay_api'), diff --git a/apps/wallet/views.py b/apps/wallet/views.py index 0c4445d..2d1aff7 100755 --- a/apps/wallet/views.py +++ b/apps/wallet/views.py @@ -11,7 +11,7 @@ from rest_framework.response import Response from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements from apps.wallet.models import Transaction -from apps.wallet.serializers import TransactionSerializer, DepositSerializer, WithdrawSerializer +from apps.wallet.serializers import TransactionSerializer, DepositSerializer, WithdrawSerializer, WalletSerializer from .constans import STATE_CHOICES from .forms import TransactionActionForm @@ -25,6 +25,16 @@ def get_application(request): application = None return application + +class DefaultWalletBalanceView(generics.RetrieveAPIView): + permission_classes = [permissions.IsAuthenticated, IsAuthenticatedOrTokenHasScope] + serializer_class = WalletSerializer + required_scopes = ['wallet.wallet:get_balance'] + + def get_object(self): + return self.request.user + + # TODO: this is user invoice create view # class TransactionList(generics.ListCreateAPIView): # permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]