def _insupd_order(self, basket, user=None, shipping_address=None, billing_address=None, **kwargs):
existing_orders = basket.order_set.all()
if existing_orders.exclude(status=settings.ORDER_STATUS_PAYMENT_DECLINED).exists():
raise exceptions.NotAcceptable(_("An non-declined order already exists for this basket."))
existing_count = existing_orders.count()
if existing_count > 1:
raise exceptions.NotAcceptable(_("Multiple order exist for this basket! This should never happen and we don't know what to do."))
# Get request object from context
request = self.context.get('request', None)
# If no orders were pre-existing, make a new one.
if existing_count == 0:
return self.place_order(
basket=basket,
user=user,
shipping_address=shipping_address,
billing_address=billing_address,
request=request,
**kwargs)
# Update this order instead of making a new one.
order = existing_orders.first()
kwargs['order_number'] = order.number
status = self.get_initial_order_status(basket)
shipping_address = self.create_shipping_address(
user=user,
shipping_address=shipping_address)
billing_address = self.create_billing_address(
user=user,
billing_address=billing_address,
shipping_address=shipping_address,
**kwargs)
return utils.OrderUpdater().update_order(
order=order,
basket=basket,
user=user,
shipping_address=shipping_address,
billing_address=billing_address,
status=status,
request=request,
**kwargs)
serializers.py 文件源码
python
阅读 28
收藏 0
点赞 0
评论 0
评论列表
文章目录