Пример #1
0
def new_order(request):
    # Link used when User make order
    try:
        if not request.user.is_authenticated():
            raise AccessError
        if not check_basket(request.user):
            raise BasketError
        addr = request.POST.get('addr')
        address = DeliveryAddress.objects.get(user=request.user, pk=int(addr))
        order = Order()
        order.address = str(address)
        order.first_name = address.first_name
        order.middle_name = address.middle_name
        order.last_name = address.last_name
        order.user = request.user
        order.name = ''
        order.comment = ''
        order.status = STATUS_WAIT
        order.save()
        basket = Basket.objects.filter(user=request.user)
        for item in basket:
            order_item = OrderItem()
            order_item.order = order
            order_item.product_name = item.product.name
            order_item.product_origin = item.product
            order_item.product_url = item.product.get_absolute_url
            order_item.amount = item.product.amount
            order_item.product_pn = item.product.shop_pn
            order_item.quantity = item.quantity
            order_item.save()
            item.product.quantity -= item.quantity
            item.product.save()
        basket.delete()
        recipients = [settings.SHOP_MANAGER]
        mail_dict = {'order': order}
        subject = 'emails/neworder_admin_subject.txt'
        body = 'emails/neworder_admin_body.txt'
        send_template_mail(subject,body,mail_dict,recipients)
        try:
            recipients = [request.user.email]
            mail_dict = {'order': order}
            subject = 'emails/neworder_client_subject.txt'
            body = 'emails/neworder_client_body.txt'
            send_template_mail(subject,body,mail_dict,recipients)
        except:
            pass
        payload = {'success': True,'id':order.pk, 'location':order.get_absolute_url()}
    except AccessError:
        payload = {'success': False}
    except BasketError:
        payload = {'success': False, 'message':_('Product in basket not available')}
    except:
        payload = {'success': False}
    return AjaxLazyAnswer(payload)
Пример #2
0
def new_order(request):
    # Link used when User make order
    try:
        if not request.user.is_authenticated():
            raise AccessError
        if not check_basket(request.user):
            raise BasketError
        addr = request.POST.get('addr')
        address = DeliveryAddress.objects.get(user=request.user, pk=int(addr))
        order = Order()
        order.address = str(address)
        order.first_name = address.first_name
        order.middle_name = address.middle_name
        order.last_name = address.last_name
        order.user = request.user
        order.name = ''
        order.comment = ''
        order.status = STATUS_WAIT
        order.save()
        basket = Basket.objects.filter(user=request.user)
        for item in basket:
            order_item = OrderItem()
            order_item.order = order
            order_item.product_name = item.product.name
            order_item.amount = item.product.amount
            order_item.product_pn = item.product.shop_pn
            order_item.quantity = item.quantity
            order_item.save()
            item.product.quantity -= item.quantity
            item.product.save()
        basket.delete()
        payload = {'success': True,'id':order.pk, 'location':order.get_absolute_url()}
    except AccessError:
        payload = {'success': False}
    except BasketError:
        payload = {'success': False, 'message':_('Product in basket not available')}
    except:
        payload = {'success': False}
    return AjaxLazyAnswer(payload)
Пример #3
0
def make_order_from_basket(order, basket):
    try:
        for item in basket:
            if settings.SHOP_CHECK_QUANTITY:
                if item.quantity > item.product.quantity:
                    raise ShopError
            order_item = OrderItem()
            order_item.order = order
            order_item.product_name = item.product.name
            order_item.product_origin = item.product
            order_item.product_url = item.product.get_absolute_url()
            order_item.amount = item.product.with_discount
            order_item.product_pn = item.product.shop_pn
            order_item.quantity = item.quantity
            order_item.addon = item.addon
            order_item.save()
            if settings.SHOP_CHECK_QUANTITY:
                item.product.quantity -= item.quantity
                item.product.save()
        basket.delete()
        order_item = OrderItem()
        order_item.order = order
        order_item.product_name = order.delivery.name
        order_item.amount = order.delivery.amount
        order_item.quantity = 1
        order_item.addon = _('Delivery')
        order_item.save()
        return True
    except ShopError:
        return False
    except:
        return False