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}'})