Example #1
0
    def rebuild_cache(self):
        filters = list(chain(
            ProductTypeFilter.objects.all(),
            ProductFilter.objects.all(),
            CategoryFilter.objects.all(),
            CatalogFilter.objects.all(),
        ))

        entry_count = len(filters)

        for i, entry in enumerate(filters):
            update_matching_catalog_filters(entry)
            print("Recaching filter %d / %d..." % (i + 1, entry_count))
Example #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.")
Example #3
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.")
Example #4
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):
        for filter_id in get_matching_for_product(instance, provide_category="campaign_catalog_filter"):
            filter = CatalogFilter.objects.get(pk=filter_id)
            update_matching_catalog_filters(filter)
    elif isinstance(instance, Category):
        for shop_product in instance.shop_products.all():
            for filter_id in get_matching_for_product(shop_product, provide_category="campaign_catalog_filter"):
                filter = CatalogFilter.objects.get(pk=filter_id)
                update_matching_catalog_filters(filter)