ptcoffee_django/core/subscription_utils.py
2023-01-21 14:15:36 -07:00

75 lines
1.9 KiB
Python

import locale
locale.setlocale(locale.LC_ALL, '')
data_object['subscription']
def convert_int_to_currency(price):
return locale.currency(int(price) / 100)
def convert_int_to_decimal(price):
return Decimal(str(price)[:-2] + '.' + str(price)[-2:])
def find_shipping_cost(data):
for x in data:
if x['description'] == 'Shipping':
return convert_int_to_currency(x['amount'])
break
else:
continue
def format_product(data, unit_price):
return {
'product': Product.objects.get(pk=data['pk']),
'quantity': data['quantity']
}
def deserialize_subscription(data):
sub_data = {}
for x in data:
if 'products_and_quantities' in x['metadata']:
sub_data['customer_note'] = f"Grind: {x['metadata']['grind']}"
sub_data['unit_price'] = convert_int_to_decimal(x['price']['unit_amount'])
sub_data['items'] = map(format_product, x['metadata']['products_and_quantities'])
sub_data['total_weight'] = x['metadata']['total_weight']
if x['description'] == 'Shipping':
sub_data['shipping_cost'] = convert_int_to_decimal(x['amount'])
continue
return sub_data
# shipping_cost = find_shipping_cost(data_object['lines']['data'])
# items = find_products(data_object['lines']['data'])
# unit_price = find_unit_price(data_object['lines']['data'])
sub_data = deserialize_subscription(data_object['lines']['data'])
order = Order.objects.create(
customer=,
status=,
billing_address=,
shipping_address=,
subtotal_amount=,
shipping_total=,
total_amount=data_object['total'],
weight=
)
order.lines.add(
[OrderLine(
product=item['product'],
quantity=item['quantity'],
customer_note=sub_data['customer_note'],
unit_price=sub_data['unit_price']
) for item in sub_data['items']]
)
order.save()