74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
from django.contrib import messages
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.http import HttpResponseRedirect
|
|
from django.shortcuts import render
|
|
from django.urls import reverse
|
|
from django.utils.decorators import method_decorator
|
|
from django.views.generic import TemplateView, FormView, UpdateView
|
|
from oauth2_provider.contrib.rest_framework import TokenHasScope, IsAuthenticatedOrTokenHasScope
|
|
from rest_framework import generics
|
|
from rest_framework.views import APIView
|
|
|
|
from apps.core.forms import ChargeForm
|
|
from apps.core.models import Charge
|
|
from apps.core.serializers import ChargeSerializer
|
|
from apps.wallet.models import Transaction
|
|
|
|
|
|
# Create your views here.
|
|
@method_decorator(login_required, name='dispatch')
|
|
class HomeView(TemplateView):
|
|
template_name = 'core/home.html'
|
|
|
|
|
|
class ChargeRequestApiView(generics.CreateAPIView):
|
|
permission_classes = [IsAuthenticatedOrTokenHasScope]
|
|
serializer_class = ChargeSerializer
|
|
required_scopes = ['wallet.wallet:get_balance']
|
|
model = Charge
|
|
|
|
def perform_create(self, serializer):
|
|
user = self.request.user
|
|
serializer.save(user = user)
|
|
|
|
|
|
class ChargeView(UpdateView):
|
|
template_name = 'core/charge.html'
|
|
form_class = ChargeForm
|
|
|
|
def get_queryset(self):
|
|
return Charge.objects.all()
|
|
|
|
def form_valid(self, form):
|
|
self.object = form.save()
|
|
amount = form.cleaned_data['amount']
|
|
payer_pk = 'a95557d6-4f21-4717-99c2-354db85f940e'
|
|
charge = self.get_object()
|
|
transaction = Transaction.objects.create(
|
|
uuid= charge.uuid,
|
|
payee_id= charge.user.pk,
|
|
payee_type=1,
|
|
payer_id=payer_pk,
|
|
payer_type=2,
|
|
amount=amount,
|
|
details = {'description': 'شارژ مجازی کیف پول'}
|
|
)
|
|
|
|
try:
|
|
transaction.submit()
|
|
transaction.verify()
|
|
messages.success(self.request, 'شارژ انجام شد')
|
|
|
|
except:
|
|
messages.error(self.request, 'خطایی رخ داده است')
|
|
|
|
return HttpResponseRedirect(self.get_success_url())
|
|
|
|
|
|
|
|
def get_success_url(self):
|
|
return reverse('core:charge', kwargs={'pk': self.object.pk})
|
|
|
|
# def form_valid(self, form):
|
|
|
|
|