mirror of
https://github.com/more-tech4-magnum-opus/backend.git
synced 2024-11-22 03:26:34 +03:00
fixed pr, optimised code
This commit is contained in:
parent
7ba849cd29
commit
ae7cfe5166
|
@ -104,7 +104,7 @@ urlpatterns = [
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"create_season/",
|
"season/",
|
||||||
include([path("", CreateSeasonApi.as_view(), name="create new season")]),
|
include([path("", CreateSeasonApi.as_view(), name="create new season")]),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -14,3 +14,5 @@ channels-redis==4.0.0
|
||||||
|
|
||||||
celery==5.2.7
|
celery==5.2.7
|
||||||
django-celery-beat==2.3.0
|
django-celery-beat==2.3.0
|
||||||
|
|
||||||
|
faker==15.0.0
|
|
@ -3,8 +3,7 @@ from rest_framework.generics import get_object_or_404
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
from common.permissions import IsAdmin
|
from common.permissions import IsAdmin
|
||||||
from users.api.serializers import UserSerializer, CreateSeasonSerializer
|
from users.api.serializers import CreateSeasonSerializer
|
||||||
from users.models import User
|
|
||||||
from users.api.serializers import (
|
from users.api.serializers import (
|
||||||
UserSerializer,
|
UserSerializer,
|
||||||
DepartmentSerializer,
|
DepartmentSerializer,
|
||||||
|
|
|
@ -2,6 +2,8 @@ from django.contrib.auth.models import AbstractUser
|
||||||
from django.core.validators import MinValueValidator
|
from django.core.validators import MinValueValidator
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
from faker import Faker
|
||||||
|
|
||||||
|
|
||||||
class User(AbstractUser):
|
class User(AbstractUser):
|
||||||
class WorkerType(models.TextChoices):
|
class WorkerType(models.TextChoices):
|
||||||
|
@ -20,8 +22,7 @@ class User(AbstractUser):
|
||||||
type = models.CharField(
|
type = models.CharField(
|
||||||
max_length=6, choices=WorkerType.choices, default=WorkerType.WORKER
|
max_length=6, choices=WorkerType.choices, default=WorkerType.WORKER
|
||||||
)
|
)
|
||||||
salary = models.IntegerField(default=0)
|
clan = models.ForeignKey("users.Clan", on_delete=models.SET_NULL, null=True)
|
||||||
clan = models.ForeignKey(Clan, on_delete=models.SET_NULL, null=True)
|
|
||||||
command = models.ForeignKey(
|
command = models.ForeignKey(
|
||||||
"users.Command", related_name="workers", on_delete=models.CASCADE
|
"users.Command", related_name="workers", on_delete=models.CASCADE
|
||||||
)
|
)
|
||||||
|
@ -75,3 +76,12 @@ class Command(models.Model):
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
class Clan(models.Model):
|
||||||
|
name = models.CharField(max_length=100, null=True)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
name = Faker().name()
|
||||||
|
self.name = name + "'s clan"
|
||||||
|
super(Clan, self).save(*args, **kwargs)
|
||||||
|
|
|
@ -4,12 +4,9 @@ import json
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
URL = 'https://hackathon.lsp.team/hk'
|
URL = "https://hackathon.lsp.team/hk"
|
||||||
|
|
||||||
base_headers = {
|
base_headers = {"Content-Type": "application/json", "Accept": "application/json"}
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Accept': 'application/json'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class Wallet(BaseModel):
|
class Wallet(BaseModel):
|
||||||
|
@ -40,91 +37,98 @@ class TransactionHistory(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
def create_wallet() -> Wallet:
|
def create_wallet() -> Wallet:
|
||||||
response = r.post(URL+'/v1/wallets/new')
|
response = r.post(URL + "/v1/wallets/new")
|
||||||
data = response.json()
|
data = response.json()
|
||||||
return Wallet(publicKey=data['publicKey'], privateKey=data['privateKey'])
|
return Wallet(publicKey=data["publicKey"], privateKey=data["privateKey"])
|
||||||
|
|
||||||
|
|
||||||
def check_transaction(trans_hash: str) -> str:
|
def check_transaction(trans_hash: str) -> str:
|
||||||
res = r.get(URL + '/v1/transfers/status/'+trans_hash, data=json.dumps({
|
res = r.get(
|
||||||
'transactionHash': trans_hash
|
URL + "/v1/transfers/status/" + trans_hash,
|
||||||
}),
|
data=json.dumps({"transactionHash": trans_hash}),
|
||||||
headers=base_headers
|
headers=base_headers,
|
||||||
)
|
)
|
||||||
return res.json()['status']
|
return res.json()["status"]
|
||||||
|
|
||||||
|
|
||||||
def transfer_rubbles(my_wallet_private_key, transfer_publick_key: str, amount: float) -> TransHash:
|
def transfer_rubbles(
|
||||||
response = r.post(URL+'/v1/transfers/ruble', data=json.dumps({
|
my_wallet_private_key, transfer_publick_key: str, amount: float
|
||||||
|
) -> TransHash:
|
||||||
|
response = r.post(
|
||||||
|
URL + "/v1/transfers/ruble",
|
||||||
|
data=json.dumps(
|
||||||
|
{
|
||||||
"fromPrivateKey": my_wallet_private_key,
|
"fromPrivateKey": my_wallet_private_key,
|
||||||
"toPublicKey": transfer_publick_key,
|
"toPublicKey": transfer_publick_key,
|
||||||
"amount": amount
|
"amount": amount,
|
||||||
}),
|
|
||||||
headers={
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Accept': 'application/json'
|
|
||||||
}
|
}
|
||||||
|
),
|
||||||
|
headers={"Content-Type": "application/json", "Accept": "application/json"},
|
||||||
)
|
)
|
||||||
return TransHash(transaction_hash=response.json()['transaction'])
|
return TransHash(transaction_hash=response.json()["transaction"])
|
||||||
|
|
||||||
|
|
||||||
def create_nft(wallet_public_key: str, string_url: str) -> TransHash:
|
def create_nft(wallet_public_key: str, string_url: str) -> TransHash:
|
||||||
response = r.post(URL + '/v1/nft/generate', data=json.dumps(
|
response = r.post(
|
||||||
{
|
URL + "/v1/nft/generate",
|
||||||
"toPublicKey": wallet_public_key,
|
data=json.dumps(
|
||||||
"uri": string_url,
|
{"toPublicKey": wallet_public_key, "uri": string_url, "nftCount": 1}
|
||||||
"nftCount": 1
|
|
||||||
}
|
|
||||||
),
|
),
|
||||||
headers=base_headers
|
headers=base_headers,
|
||||||
)
|
)
|
||||||
return TransHash(transaction_hash=response.json()['transaction_hash'])
|
return TransHash(transaction_hash=response.json()["transaction_hash"])
|
||||||
|
|
||||||
|
|
||||||
def get_nfts(wallet_public_key: str) -> List[NftInfo]:
|
def get_nfts(wallet_public_key: str) -> List[NftInfo]:
|
||||||
res = r.get(URL+f'/v1/wallets/{wallet_public_key}/nft/balance')
|
res = r.get(URL + f"/v1/wallets/{wallet_public_key}/nft/balance")
|
||||||
print(res.json())
|
print(res.json())
|
||||||
return list(
|
return list(
|
||||||
map(
|
map(
|
||||||
lambda res: NftInfo(
|
lambda res: NftInfo(uri=res["uri"], tokens=res["tokens"]),
|
||||||
uri=res['uri'],
|
res.json()["balance"],
|
||||||
tokens=res['tokens']
|
|
||||||
),
|
|
||||||
res.json()['balance']
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_history(wallet_public_key: str) -> List[TransactionHistory]:
|
|
||||||
res = r.post(URL+f'/v1/wallets/{wallet_public_key}/history', data=json.dumps({
|
|
||||||
"page": 0,
|
|
||||||
"offset": 100,
|
|
||||||
"sort": "asc"
|
|
||||||
|
|
||||||
}), headers=base_headers)
|
def get_history(wallet_public_key: str) -> List[TransactionHistory]:
|
||||||
|
res = r.post(
|
||||||
|
URL + f"/v1/wallets/{wallet_public_key}/history",
|
||||||
|
data=json.dumps({"page": 0, "offset": 100, "sort": "asc"}),
|
||||||
|
headers=base_headers,
|
||||||
|
)
|
||||||
return list(
|
return list(
|
||||||
map(
|
map(
|
||||||
lambda res: TransactionHistory(
|
lambda res: TransactionHistory(
|
||||||
hash=res['hash'],
|
hash=res["hash"],
|
||||||
timestamp=res['timeStamp'],
|
timestamp=res["timeStamp"],
|
||||||
token_name=res['tokenName'],
|
token_name=res["tokenName"],
|
||||||
from_wallet=res['from'],
|
from_wallet=res["from"],
|
||||||
to_wallet=res['to']
|
to_wallet=res["to"],
|
||||||
),
|
),
|
||||||
res.json()['history']
|
res.json()["history"],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def transfer_nft(my_private_wallet_key: str, transfer_publick_key: str, token_id: int) -> TransHash:
|
def transfer_nft(
|
||||||
res = r.post(URL+'/v1/transfers/nft', data=json.dumps(
|
my_private_wallet_key: str, transfer_publick_key: str, token_id: int
|
||||||
|
) -> TransHash:
|
||||||
|
res = r.post(
|
||||||
|
URL + "/v1/transfers/nft",
|
||||||
|
data=json.dumps(
|
||||||
{
|
{
|
||||||
"fromPrivateKey": my_private_wallet_key,
|
"fromPrivateKey": my_private_wallet_key,
|
||||||
"toPublicKey": transfer_publick_key,
|
"toPublicKey": transfer_publick_key,
|
||||||
"tokenId": token_id
|
"tokenId": token_id,
|
||||||
}
|
}
|
||||||
), headers=base_headers)
|
),
|
||||||
return TransHash(transaction_hash=res.json()['transaction_hash'])
|
headers=base_headers,
|
||||||
|
)
|
||||||
|
return TransHash(transaction_hash=res.json()["transaction_hash"])
|
||||||
|
|
||||||
|
|
||||||
def get_balance(my_public_wallet_key: str) -> WalletBalance:
|
def get_balance(my_public_wallet_key: str) -> WalletBalance:
|
||||||
res = r.get(URL+f'/v1/wallets/{my_public_wallet_key}/balance')
|
res = r.get(URL + f"/v1/wallets/{my_public_wallet_key}/balance")
|
||||||
return WalletBalance(matic=res.json()['maticAmount'], coins=res.json()['coinsAmount'])
|
return WalletBalance(
|
||||||
|
matic=res.json()["maticAmount"], coins=res.json()["coinsAmount"]
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user