correct.py
2.2 kB · python · 59 lines
1from catalog.helpers import load_corrections, load_product, save_product23def reset(product):4 for placement in product.placements:5 placement.is_ignored = False6 for variant in product.variants:7 variant.is_ignored = False8 for mockup in product.mockups:9 mockup.is_ignored = False1011def correct_dims(product, dims):12 for placement in product.placements:13 for item in dims:14 if list(placement.dims) == item["from"]:15 placement.width, placement.height = item["to"]16 for value in placement.dims:17 if round(value, 2) != value:18 print(f"Dims: {product.desc} - {placement.name} - {placement.dims}")19 break2021def correct_placements(product, names):22 for placement in product.placements:23 if placement.name in names:24 print(f"Ignored placement: {product.desc} - {placement.name}")25 placement.is_ignored = True2627def correct_variants(product, ids):28 for variant in product.variants:29 if variant.id in ids:30 print(f"Ignored variant: {product.desc} - {variant.desc}")31 variant.is_ignored = True3233def correct_mockups(product, categories, titles, ids):34 for mockup in product.mockups:35 ignore = mockup.category in categories36 if not ignore:37 ignore = any(title in mockup.title for title in titles)38 if not ignore:39 ignore = mockup.id in ids40 if ignore:41 print(f"Ignored mockup: {product.desc} - {mockup.alt}")42 mockup.is_ignored = True4344def correct_products(ids: list[int]):45 print(f"Correcting {len(ids)} products")46 corrections = load_corrections()47 categories = corrections["mockup_categories"]48 titles = corrections["mockup_titles"]49 placements = corrections["placements"]50 for id in ids:51 product = load_product(id)52 reset(product)53 correct_dims(product, corrections["dims"])54 correct_placements(product, placements)55 correct_variants(product, corrections["variants"].get(str(id), []))56 correct_mockups(product, categories, titles, corrections["mockups"].get(str(id), []))57 save_product(product)58 print(f"Corrected: {product.desc}")59 print(f"Corrected {len(ids)} products")