47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import time
|
|
|
|
from apps.product.models import Product as ProductModel
|
|
from apps.order.models import Order as OrderModel
|
|
from apps.emtiyazat.selector import get_emtiyaz_mojri
|
|
from rest_framework.exceptions import ValidationError
|
|
from apps.order.models import Order as OrderModel
|
|
from apps.emtiyazat.services import decrease_emtiyaz
|
|
from config.celery import app
|
|
from celery import shared_task
|
|
from utils.services.sms_task import task_send_sms
|
|
#from apps.projectcode.task import generate_code
|
|
|
|
|
|
def create_order(product_id: int, cuser) -> OrderModel:
|
|
|
|
try:
|
|
product = ProductModel.objects.get(id=product_id)
|
|
product_emtiyaz = product.get_emtiyaz
|
|
emtiyaz_mojri = get_emtiyaz_mojri(cuser)
|
|
|
|
#generate_code.delay(count=20)
|
|
|
|
if emtiyaz_mojri >= product_emtiyaz:
|
|
|
|
decrease_emtiyaz(product_emtiyaz, desc=product.name, cuser=cuser)
|
|
|
|
order = OrderModel.objects.create(
|
|
cuser_mojri=cuser,
|
|
product=product,
|
|
emtiyaz=product_emtiyaz,
|
|
name=product.name,
|
|
desc=product.desc,
|
|
price=product.price
|
|
)
|
|
|
|
message = f'لوله گستر گلپایگان: مجری محترم درخواست شما ثبت و درحال برسی است'
|
|
task_send_sms.delay(message=message, mobile=cuser.mobile)
|
|
|
|
return order
|
|
else:
|
|
raise ValidationError({'error': 'emtiyaz mojri not enough'})
|
|
|
|
except Exception as exp:
|
|
raise ValidationError({'error': f'error in create order {exp}'})
|
|
|