2017-03-12 21:19:07 +00:00
|
|
|
from longclaw.longclaworders.models import Order, OrderItem
|
|
|
|
from longclaw.longclawshipping.models import Address
|
2017-02-03 10:04:57 +00:00
|
|
|
|
|
|
|
class PaymentError(Exception):
|
|
|
|
def __init__(self, message):
|
|
|
|
self.message = str(message)
|
2017-03-12 21:19:07 +00:00
|
|
|
|
|
|
|
def create_order(basket_items,
|
|
|
|
addresses,
|
|
|
|
email,
|
|
|
|
shipping_rate,
|
|
|
|
ip_address='0.0.0.0'):
|
|
|
|
'''
|
|
|
|
Create an order from a basket and customer infomation
|
|
|
|
'''
|
|
|
|
if isinstance(addresses, dict):
|
|
|
|
shipping_address, _ = Address.objects.get_or_create(name=addresses['shipping_name'],
|
|
|
|
line_1=addresses[
|
|
|
|
'shipping_address_line1'],
|
|
|
|
city=addresses[
|
|
|
|
'shipping_address_city'],
|
|
|
|
postcode=addresses[
|
|
|
|
'shipping_address_zip'],
|
|
|
|
country=addresses[
|
|
|
|
'shipping_address_country'])
|
|
|
|
shipping_address.save()
|
|
|
|
billing_address, _ = Address.objects.get_or_create(name=addresses['billing_name'],
|
|
|
|
line_1=addresses[
|
|
|
|
'billing_address_line1'],
|
|
|
|
city=addresses[
|
|
|
|
'billing_address_city'],
|
|
|
|
postcode=addresses[
|
|
|
|
'billing_address_zip'],
|
|
|
|
country=addresses[
|
|
|
|
'billing_address_country'])
|
|
|
|
billing_address.save()
|
|
|
|
|
|
|
|
|
|
|
|
order = Order(
|
|
|
|
email=email,
|
|
|
|
ip_address=ip_address,
|
|
|
|
shipping_address=shipping_address,
|
|
|
|
billing_address=billing_address,
|
|
|
|
shipping_rate=shipping_rate
|
|
|
|
)
|
|
|
|
order.save()
|
|
|
|
# Create the order items
|
|
|
|
for item in basket_items:
|
|
|
|
order_item = OrderItem(
|
|
|
|
product=item.variant,
|
|
|
|
quantity=item.quantity,
|
|
|
|
order=order
|
|
|
|
)
|
|
|
|
order_item.save()
|
|
|
|
|
|
|
|
return order
|