You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
from .models import Product
|
|
|
|
|
|
def get_variant_picker_data(product):
|
|
variants = product.variants.all()
|
|
variant_attributes = product.attributes.all()
|
|
data = {'variants': [], 'variantAttributes': [], 'discount_policy': product.discount_policy}
|
|
|
|
for attribute in sorted(variant_attributes, key=lambda x: x.main_attribute, reverse=True):
|
|
data['variantAttributes'].append({
|
|
'name': attribute.name,
|
|
'public_name': attribute.name.split('_')[1],
|
|
'slug': attribute.slug,
|
|
'values': [{'name': value.name, 'slug': value.slug} for value in attribute.values.all()]
|
|
})
|
|
|
|
for variant in variants:
|
|
price = variant.price
|
|
|
|
variant_data = {
|
|
'id': variant.id,
|
|
'slug': variant.slug,
|
|
'name': variant.name,
|
|
'price': int(price),
|
|
'attributes': variant.attributes,
|
|
|
|
}
|
|
|
|
data['variants'].append(variant_data)
|
|
|
|
return data
|
|
|
|
|
|
def expand_categories(categories):
|
|
products = None
|
|
for e in categories:
|
|
if e.name.startswith('None'):
|
|
products = Product.objects.filter(category=e)
|
|
return [x for x in categories if not x.name.startswith('None')], products
|
|
|