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")