add rollback api
This commit is contained in:
parent
bd3438528d
commit
4393e3878a
2 changed files with 51 additions and 1 deletions
|
|
@ -24,9 +24,11 @@ application_urlpatterns = [
|
||||||
|
|
||||||
path('api/application/<payer_wallet>/deposit/', application_views.DepositSubmitAPIView.as_view(), name='application_deposit_submit_api'),
|
path('api/application/<payer_wallet>/deposit/', application_views.DepositSubmitAPIView.as_view(), name='application_deposit_submit_api'),
|
||||||
path('api/application/<payer_wallet>/deposit/<uuid>/verify', application_views.DepositVerifyAPIView.as_view(), name='application_deposit_verify_api'),
|
path('api/application/<payer_wallet>/deposit/<uuid>/verify', application_views.DepositVerifyAPIView.as_view(), name='application_deposit_verify_api'),
|
||||||
|
path('api/application/<payer_wallet>/deposit/<uuid>/rollback', application_views.DepositRollbackAPIView.as_view(), name='application_deposit_rollback_api'),
|
||||||
|
|
||||||
path('api/application/<payee_wallet>/withdraw/', application_views.WithdrawSubmitAPIView.as_view(), name='application_withdraw_submit_api'),
|
path('api/application/<payee_wallet>/withdraw/', application_views.WithdrawSubmitAPIView.as_view(), name='application_withdraw_submit_api'),
|
||||||
path('api/application/<payee_wallet>/withdraw/<uuid>/verify', application_views.WithdrawVerifyAPIView.as_view(), name='application_withdraw_verify_api'),
|
path('api/application/<payee_wallet>/withdraw/<uuid>/verify', application_views.WithdrawVerifyAPIView.as_view(), name='application_withdraw_verify_api'),
|
||||||
|
path('api/application/<payee_wallet>/withdraw/<uuid>/rollback', application_views.WithdrawRollbackAPIView.as_view(), name='application_withdraw_rollback_api'),
|
||||||
|
|
||||||
# path('api/application/wallets/<wallet>/', application_views.WalletTransactionListAPIView.as_view(), name='application_transaction_list_api'),
|
# path('api/application/wallets/<wallet>/', application_views.WalletTransactionListAPIView.as_view(), name='application_transaction_list_api'),
|
||||||
# path('api/application/wallets/<wallet>/<uuid>/', application_views.WalletTransactionDetailAPIView.as_view(), name='application_transaction_detail'),
|
# path('api/application/wallets/<wallet>/<uuid>/', application_views.WalletTransactionDetailAPIView.as_view(), name='application_transaction_detail'),
|
||||||
|
|
|
||||||
|
|
@ -259,7 +259,33 @@ class DepositVerifyAPIView(generics.RetrieveAPIView):
|
||||||
instance = self.get_object()
|
instance = self.get_object()
|
||||||
if instance.state == StateChoices.PENDING:
|
if instance.state == StateChoices.PENDING:
|
||||||
instance.verify()
|
instance.verify()
|
||||||
logger.warning(f"Transaction was retrieved for {instance.uuid}: {instance.state}")
|
logger.warning(f"Transaction was verified for {instance.uuid}: {instance.state}")
|
||||||
|
serializer = self.get_serializer(instance)
|
||||||
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class DepositRollbackAPIView(generics.RetrieveAPIView):
|
||||||
|
permission_classes = [IsAuthenticatedOrTokenHasScope]
|
||||||
|
serializer_class = ApplicationDepositSerializer
|
||||||
|
lookup_field = 'uuid'
|
||||||
|
required_scopes = ['wallet.application.deposit:rollback']
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
application = get_application(self.request)
|
||||||
|
payer_wallet_uuid = self.kwargs.get('payer_wallet')
|
||||||
|
if payer_wallet_uuid:
|
||||||
|
wallet = get_object_or_404(Wallet.objects.all(), uuid=payer_wallet_uuid)
|
||||||
|
else:
|
||||||
|
wallet = None
|
||||||
|
account = Account.objects.get(owner_uuid=application.uuid, owner_type=TypeChoices.APPLICATION, wallet=wallet)
|
||||||
|
return Transaction.objects.filter(application=application, payer_account=account).all()
|
||||||
|
|
||||||
|
def retrieve(self, request, *args, **kwargs):
|
||||||
|
instance = self.get_object()
|
||||||
|
|
||||||
|
instance.rollback()
|
||||||
|
logger.warning(f"Transaction was rolled back for {instance.uuid}: {instance.state}")
|
||||||
serializer = self.get_serializer(instance)
|
serializer = self.get_serializer(instance)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
@ -359,3 +385,25 @@ class WithdrawVerifyAPIView(generics.RetrieveAPIView):
|
||||||
|
|
||||||
serializer = self.get_serializer(instance)
|
serializer = self.get_serializer(instance)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
|
class WithdrawRollbackAPIView(generics.RetrieveAPIView):
|
||||||
|
permission_classes = [TokenHasScope]
|
||||||
|
serializer_class = ApplicationWithdrawSerializer
|
||||||
|
lookup_field = 'uuid'
|
||||||
|
required_scopes = ['wallet.application.withdraw:rollback']
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
application = get_application(self.request)
|
||||||
|
payee_wallet_uuid = self.kwargs.get('payee_wallet')
|
||||||
|
wallet = get_object_or_404(Wallet.objects.all(), uuid=payee_wallet_uuid)
|
||||||
|
payee_account = Account.objects.get(owner_uuid=application.uuid, owner_type=TypeChoices.APPLICATION, wallet=wallet)
|
||||||
|
return Transaction.objects.filter(application=application, payee_account=payee_account).all()
|
||||||
|
|
||||||
|
def retrieve(self, request, *args, **kwargs):
|
||||||
|
instance = self.get_object()
|
||||||
|
|
||||||
|
instance.rollback()
|
||||||
|
logger.warning(f"Transaction was rolled back for {instance.uuid}: {instance.state}")
|
||||||
|
serializer = self.get_serializer(instance)
|
||||||
|
return Response(serializer.data)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue