in server/store/views.py [0:0]
def purchase(self, request, pk):
product = get_object_or_404(Product, id=pk)
if product.inventory_count > 0:
product.inventory_count -= 1
product.save()
Transaction.objects.create(
datetime=timezone.now(), product_id=product, unit_price=product.price
)
else:
log_error(
"INVENTORY_COUNT_ERROR",
"A purchase was attempted where there was insufficient inventory to fulfil the order.",
product,
)
raise ProductPurchaseException()
# If the transaction caused a product to sell out, log an error
if product.inventory_count == 0:
log_error(
"INVENTORY_SOLDOUT_ERROR",
"A purchase just caused a product to sell out. More inventory will be required.",
product,
)
serializer = ProductSerializer(product)
return Response(serializer.data)