def create_order(request): result = None cart = ExtCart(request) location = request.session.get('cdek_location', None) if not cart.count(): return redirect('checkout:show_cart') order = Order.objects.create( status='new', owner=request.user, date_added=datetime.now(), ) try: currency = Currency.objects.get(code__exact=settings.DEFAULT_CURRENCY) except Currency.DoesNotExist: currency = Currency.objects.all() if currency: currency = currency[0] for cart_item in cart: OrderProduct.objects.create( order = order, quantity = cart_item.quantity, product = cart_item.get_product(), current_price = cart_item.unit_price, currency = currency ) TrackOrder.objects.create( order = order, status = 'new', description = _('Order create'), date_added = datetime.now(), performer = request.user ) if location: try: currency = Currency.objects.get(code__exact=settings.DELIVERY_CURRENCY) except Currency.DoesNotExist: currency = Currency.objects.all() if currency: currency = currency[0] args = { 'order': order, 'location_to': '%s, %s' % (location.city, location.region), 'location_to_id': location.id, 'date_added': datetime.now(), 'currency': currency } result = delivery_to_location(location.id, cart) if result: args['tariff'] = get_or_none(Tariff, cdek_id=result['tariffId']) args['price'] = result.get('price', 0) args['min_days'] = result.get('deliveryPeriodMin', None) args['max_days'] = result.get('deliveryPeriodMax', None) Delivery.objects.create(**args) cart.clear() return redirect('checkout:show_order', order.id)