fix: group products by design to eliminate duplicates

This commit is contained in:
Jeff Emmett 2026-01-31 13:42:25 +00:00
parent ce77530efc
commit c10e1fb453
1 changed files with 48 additions and 32 deletions

View File

@ -170,42 +170,58 @@ class DesignService:
products = [] products = []
for design in designs: for design in designs:
for dp in design.products: # Skip designs with no products
# Filter by product type if specified if not design.products:
if product_type and dp.type != product_type: continue
continue
variants = [ # Filter by product type if specified
ProductVariant( matching_products = [
name=v, dp for dp in design.products
sku=f"{dp.sku}-{v}", if not product_type or dp.type == product_type
provider=dp.provider, ]
price=dp.retail_price,
)
for v in dp.variants
] if dp.variants else [
ProductVariant(
name="default",
sku=dp.sku,
provider=dp.provider,
price=dp.retail_price,
)
]
products.append( if not matching_products:
Product( continue
slug=design.slug,
name=design.name, # Use the first matching product for base info, combine all variants
description=design.description, dp = matching_products[0]
category=design.category, all_variants = []
product_type=dp.type,
tags=design.tags, for mp in matching_products:
image_url=design.image_url, if mp.variants:
base_price=dp.retail_price, for v in mp.variants:
variants=variants, all_variants.append(
is_active=True, ProductVariant(
name=f"{v} ({mp.provider})",
sku=f"{mp.sku}-{v}",
provider=mp.provider,
price=mp.retail_price,
)
)
else:
all_variants.append(
ProductVariant(
name=f"default ({mp.provider})",
sku=mp.sku,
provider=mp.provider,
price=mp.retail_price,
)
) )
products.append(
Product(
slug=design.slug,
name=design.name,
description=design.description,
category=design.category,
product_type=dp.type,
tags=design.tags,
image_url=design.image_url,
base_price=dp.retail_price,
variants=all_variants,
is_active=True,
) )
)
return products return products