transaction home

This commit is contained in:
mahdavi 2022-09-04 17:50:09 +04:30
parent cadf32e360
commit 1c2b63a7fb
5 changed files with 51 additions and 15 deletions

View file

@ -1,16 +1,17 @@
from django.urls import path from django.urls import path
from django.contrib.auth.views import LogoutView from django.contrib.auth.views import LogoutView
from .views import UserListView, UserDetailView, AccountView, RequestOTPView, ChangePasswordView, \ from .views import UserListView, UserDetailView, AccountView, RequestOTPView, ChangePasswordView, \
OTPLoginView OTPLoginView, ProfileView
app_name = "users" app_name = "users"
urlpatterns = [ urlpatterns = [
path('login/', OTPLoginView.as_view(), name='login'), path('login/', OTPLoginView.as_view(), name='login'),
path('logout/', LogoutView.as_view(), name='logout'), path('logout/', LogoutView.as_view(), name='logout'),
path('api/account/', AccountView.as_view(), name='account'), path('profile/', ProfileView.as_view(), name='profile'),
path('api/users/', UserListView.as_view()), path('api/account/', AccountView.as_view(), name='account_api'),
path('api/users/<uuid>/', UserDetailView.as_view(), name='user_detail'), path('api/users/', UserListView.as_view(), name='user_list_api'),
path('api/request_otp/', RequestOTPView.as_view(), name='request_otp'), path('api/users/<uuid>/', UserDetailView.as_view(), name='user_detail_api'),
path('api/change_password/', ChangePasswordView.as_view(), name='change_password'), path('api/request_otp/', RequestOTPView.as_view(), name='request_otp_api'),
path('api/change_password/', ChangePasswordView.as_view(), name='change_password_api'),
] ]

View file

@ -3,6 +3,8 @@ from django.contrib.auth.decorators import login_required
from django.contrib.auth.views import LoginView from django.contrib.auth.views import LoginView
from django.shortcuts import render from django.shortcuts import render
from django.utils import timezone from django.utils import timezone
from django.utils.decorators import method_decorator
from django.views.generic import DetailView
from oauth2_provider.contrib.rest_framework import IsAuthenticatedOrTokenHasScope from oauth2_provider.contrib.rest_framework import IsAuthenticatedOrTokenHasScope
from rest_framework import generics, status, permissions from rest_framework import generics, status, permissions
from rest_framework.response import Response from rest_framework.response import Response
@ -95,6 +97,16 @@ class ChangePasswordView(generics.UpdateAPIView):
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@method_decorator(login_required, name='dispatch')
class ProfileView(DetailView):
model = User
template_name = 'registration/profile.html'
pk_url_kwarg = 'uuid'
def get_object(self, queryset=None):
return self.request.user
class OTPLoginView(LoginView): class OTPLoginView(LoginView):
""" """
Display the login form and handle the login action. Display the login form and handle the login action.

View file

@ -1,17 +1,19 @@
from django.urls import path from django.urls import path
from .views import TransactionList, TransactionDetail, TransactionPay, TransactionReceipt, \ from .views import TransactionList, TransactionDetail, TransactionPay, TransactionReceipt, \
WithdrawVerify, WithdrawSubmit, DepositSubmit, DepositVerify WithdrawVerify, WithdrawSubmit, DepositSubmit, DepositVerify, TransactionListView
app_name = "wallet" app_name = "wallet"
urlpatterns = [ urlpatterns = [
path('transactions/', TransactionList.as_view(), name='transactions'), path('transactions/', TransactionListView.as_view(), name='transaction_list'),
path('transactions/<uuid>', TransactionDetail.as_view(), name='transaction_detail'), path('api/transactions/', TransactionList.as_view(), name='transaction_list_api'),
path('transactions/<uuid>/pay', TransactionPay.as_view(), name='transaction_pay'), path('api/transactions/<uuid>', TransactionDetail.as_view(), name='transaction_detail_api'),
path('transactions/<uuid>/receipt', TransactionReceipt.as_view(), name='transaction_receipt'), path('api/transactions/<uuid>/pay', TransactionPay.as_view(), name='transaction_pay_api'),
path('api/transactions/<uuid>/receipt', TransactionReceipt.as_view(), name='transaction_receipt_api'),
# #
path('deposit/', DepositSubmit.as_view(), name='deposit_submit'), path('api/deposit/', DepositSubmit.as_view(), name='deposit_submit_api'),
path('deposit/<uuid>/verify', DepositVerify.as_view(), name='deposit_verify'), path('api/deposit/<uuid>/verify', DepositVerify.as_view(), name='deposit_verify_api'),
# #
path('withdraw/', WithdrawSubmit.as_view(), name='withdraw_submit'), path('api/withdraw/', WithdrawSubmit.as_view(), name='withdraw_submit_api'),
path('withdraw/<uuid>/verify', WithdrawVerify.as_view(), name='withdraw_verify'), path('api/withdraw/<uuid>/verify', WithdrawVerify.as_view(), name='withdraw_verify_api'),
] ]

View file

@ -1,4 +1,7 @@
from django.contrib.auth.decorators import login_required
from django.db.models import Q from django.db.models import Q
from django.utils.decorators import method_decorator
from django.views.generic import DetailView, ListView
from oauth2_provider.contrib.rest_framework import TokenHasScope, IsAuthenticatedOrTokenHasScope from oauth2_provider.contrib.rest_framework import TokenHasScope, IsAuthenticatedOrTokenHasScope
from rest_framework import generics, permissions from rest_framework import generics, permissions
@ -148,3 +151,13 @@ class WithdrawVerify(generics.RetrieveAPIView):
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
return Response(serializer.data) return Response(serializer.data)
@method_decorator(login_required, name='dispatch')
class TransactionListView(ListView):
model = Transaction
template_name = 'wallet/transaction_list.html'
def get_queryset(self):
user = self.request.user
return Transaction.objects.filter(Q(payee=user) | Q(payer=user)).all()

View file

@ -0,0 +1,8 @@
{% extends "base_generic.html" %}
{% block content %}
{% for transaction in object_list %}
{{ transaction }}
{% endfor %}
{% endblock %}