mirror of
https://github.com/Rushilwiz/rounded.git
synced 2025-04-09 22:00:18 -04:00
78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
from django.shortcuts import render
|
|
|
|
from uuid import uuid4
|
|
|
|
import requests
|
|
|
|
from .models import *
|
|
from .serializers import *
|
|
|
|
from rest_framework import status, permissions
|
|
|
|
from rest_framework.views import APIView
|
|
from rest_framework.viewsets import ModelViewSet
|
|
from rest_framework.generics import CreateAPIView
|
|
from rest_framework.response import Response
|
|
|
|
# Create your views here.
|
|
class FoundationViewSet(ModelViewSet):
|
|
permission_classes = [permissions.AllowAny]
|
|
queryset = models.Foundation.objects.all()
|
|
serializer_class = FoundationSerializer
|
|
|
|
class ConsumerOrderViewSet(ModelViewSet):
|
|
queryset = ''
|
|
serializerClass = ConsumerOrderSerializer
|
|
|
|
def list(self, request, *args, **kwargs):
|
|
queryset = request.user.consumer.foundation_orders.all()
|
|
serializer = ConsumerOrderSerializer(queryset, many=True)
|
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
|
|
|
|
class ConsumerCreate(CreateAPIView):
|
|
model = User
|
|
permission_classes = [permissions.AllowAny]
|
|
serializer_class = ConsumerCreateSerializer
|
|
|
|
class ConsumerDetail(APIView):
|
|
def get(self, request, format=None):
|
|
profile = request.user.consumer
|
|
serializer = ConsumerSerializer(profile)
|
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
|
|
class ConsumerUpdate(APIView):
|
|
def post(self, request, format=None):
|
|
profile = request.user.consumer
|
|
profile.phone = request.data['phone']
|
|
profile.save()
|
|
|
|
class ConsumerAddWallet(APIView):
|
|
def post(self, request, format=None):
|
|
profile = request.user.consumer
|
|
profile.wallet = Wallet.objects.create(address=request.data['address'])
|
|
profile.save()
|
|
|
|
def generate_order(request):
|
|
if request.method == 'POST':
|
|
foundation = User.objects.get(username=request.POST['foundation']).foundation
|
|
price = int(request.POST['price'])
|
|
uuid = uuid4()
|
|
order = FoundationOrder.objects.create(consumer=request.user.consumer, foundation=foundation, price=price, uuid=uuid)
|
|
|
|
rate = int(requests.get("https://node.deso.org/api/v0/get-exchange-rate").json()["USDCentsPerBitCloutExchangeRate"])
|
|
|
|
price_in_nanos = (((10**9) * price) / rate)
|
|
|
|
options = {
|
|
"SenderPublicKeyBase58Check": request.user.consumer.wallet.address,
|
|
"RecipientPublicKeyOrUsername": foundation.wallet.address,
|
|
"AmountNanos": price_in_nanos
|
|
}
|
|
|
|
hex = request.post('https://node.deso.org/api/v0/send-deso', json=options).json()["TransactionHex"]
|
|
foundation.hex = hex
|
|
|
|
foundation.save()
|
|
|