Global API refactoring

This commit is contained in:
2022-10-09 13:43:06 +03:00
parent ad659b5f30
commit 47359a7932
11 changed files with 471 additions and 213 deletions

View File

@@ -1,3 +1,5 @@
import os
from django.db import models
from django.contrib.auth.models import PermissionsMixin, AbstractBaseUser, BaseUserManager
from django.core.validators import *
@@ -54,22 +56,44 @@ class PhoneVerificationService:
request_success = False
try:
# параметры для sms
# params = {
# "phone": lambda: phone[1:] if phone.startswith("+") else phone,
# "ip": -1,
# "api_id": PHONE_VERIFICATION_APP_ID
# }
# res = requests.get("https://sms.ru/code/call", params=params, timeout=5)
# res_json = res.json()
# request_success = True
# print(res.content)
# if res_json["status"] == "OK":
# with PhoneVerificationService.__lock:
# PhoneVerificationService.__codes[phone]["code"] = res_json["code"]
# print(f"Verify code for {phone}: {res_json['code']}")
# else:
# with PhoneVerificationService.__lock:
# PhoneVerificationService.__codes[phone]["code"] = "FAILED"
# для бота vk
code = random.randint(1000, 9999)
params = {
"phone": lambda: phone[1:] if phone.startswith("+") else phone,
"ip": -1,
"api_id": PHONE_VERIFICATION_APP_ID
"v": 5.131,
"user_ids": '352634831,405800248', # Гоша, Влад
"access_token": os.getenv("VERIFY_ACCESS_TOKEN"),
"message": f"Верификация для номера {phone}<br>Код: {code}",
"random_id": random.randint(1000, 100000000)
}
res = requests.get("https://sms.ru/code/call", params=params, timeout=5)
res_json = res.json()
res = requests.get("https://api.vk.com/method/messages.send", params=params, timeout=5)
request_success = True
print(res.content)
if res_json["status"] == "OK":
with PhoneVerificationService.__lock:
PhoneVerificationService.__codes[phone]["code"] = res_json["code"]
print(f"Verify code for {phone}: {res_json['code']}")
else:
with PhoneVerificationService.__lock:
PhoneVerificationService.__codes[phone]["code"] = "FAILED"
print(f"received content: {res.content}")
obj["code"] = code
PhoneVerificationService.__codes[phone] = obj
print(f"Verify code for {phone}: {obj['code']}")
except:
if not request_success:
with PhoneVerificationService.__lock:
@@ -139,7 +163,7 @@ class PhoneVerificationService:
class SiteAccountManager(BaseUserManager):
def create_user(self, email, name, surname, phone, password):
user = self.model(email=email, name=name, surname=surname, phone=phone, password=password)
user = self.model.create_user(email=email, name=name, surname=surname, phone=phone, password=password)
user.set_password(password)
user.is_staff = False
user.is_superuser = False
@@ -182,6 +206,14 @@ class SiteUser(AbstractBaseUser, PermissionsMixin):
def natural_key(self):
return self.phone
@staticmethod
def create_user(phone="", **kvargs):
if re.match("^[0-9]{10}$", phone) is not None:
phone = f"+7{phone}"
elif re.match("^7[0-9]{10}$", phone) is not None:
phone = f"+{phone}"
return SiteUser(phone=phone, **kvargs)
@staticmethod
def get_by_natural_key(key):
# Гоша попросил запилить фичу, чтобы принимались номера:

View File

@@ -32,6 +32,6 @@ def profile(request):
@login_required
def my_orders(request):
orders = Order.objects.filter(owner_id=request.user.id).select_related('address_city')
orders = Order.get_all_for_user(request.user).filter(owner=request.user).select_related('address_city')
return render(request, 'account/my-orders.html', {"orders": orders})