Ejemplo n.º 1
0
def update_filter_cache(sender, instance, **kwargs):
    invalidate_context_filter_cache(sender, instance=instance, **kwargs)
    if isinstance(instance, CatalogFilter):
        update_matching_catalog_filters(instance)
    elif isinstance(instance, ShopProduct):
        # shop product being saved
        action = kwargs.get("action")
        if not action:
            # this is plain ``ShopProduct`` save
            update_matching_catalog_filters(instance)
        else:
            # This comes from categories through and it should only
            # update those categories the shop product attached into
            ids = None
            if action in ["post_add", "post_remove"]:
                ids = kwargs["pk_set"]
            if ids:
                if instance and instance.primary_category:
                    ids.add(instance.primary_category.pk)
                update_matching_category_filters(instance, ids)
    elif isinstance(instance, Category):
        for shop_product in instance.shop_products.all():
            update_matching_catalog_filters(shop_product)
    else:
        raise CampaignsInvalidInstanceForCacheUpdate("Invalid instance type.")
Ejemplo n.º 2
0
def update_filter_cache(sender, instance, **kwargs):
    invalidate_context_filter_cache(sender, instance=instance, **kwargs)
    if isinstance(instance, CatalogFilter):
        update_matching_catalog_filters(instance)
    elif isinstance(instance, ShopProduct):
        # shop product being saved
        action = kwargs.get("action")
        if not action:
            # this is plain ``ShopProduct`` save
            update_matching_catalog_filters(instance)
        else:
            # This comes from categories through and it should only
            # update those categories the shop product attached into
            ids = None
            if action in ["post_add", "post_remove"]:
                ids = kwargs["pk_set"]
            if ids:
                if instance and instance.primary_category:
                    ids.add(instance.primary_category.pk)
                update_matching_category_filters(instance, ids)
    elif isinstance(instance, Category):
        for shop_product in instance.shop_products.all():
            update_matching_catalog_filters(shop_product)
    else:
        raise CampaignsInvalidInstanceForCacheUpdate("Invalid instance type.")