def save(self, *args, **kwargs): super(CatalogCampaign, self).save(*args, **kwargs) self.filters.update(active=self.active) for f in self.filters.all(): for matching_product in f.get_matching_shop_products(): context_cache.bump_cache_for_shop_product(matching_product) self.conditions.update(active=self.active)
def update_matching_catalog_filters(shop_product_or_filter): if isinstance(shop_product_or_filter, CatalogFilter): CatalogFilterCachedShopProduct.objects.filter( filter=shop_product_or_filter).delete() for matching_product in shop_product_or_filter.get_matching_shop_products( ): CatalogFilterCachedShopProduct.objects.create( filter=shop_product_or_filter, shop_product=matching_product) context_cache.bump_cache_for_shop_product(matching_product) return shop_product = shop_product_or_filter from shuup.campaigns.utils.matcher import get_matching_for_product q = _get_filter_query(shop_product) all_shop_products = [shop_product] + list(ShopProduct.objects.filter(q)) all_ids = [sp.pk for sp in all_shop_products] ids = get_matching_for_product( shop_product_or_filter, provide_category="campaign_catalog_filter", skippable_classes=[ CatalogFilter ] # these will be handled separately in update_matching_category_filters ) CatalogFilterCachedShopProduct.objects.filter( filter__id__in=ids, shop_product__id__in=all_ids).delete() for filter in CatalogFilter.objects.filter(id__in=ids): for sp in all_shop_products: if filter.matches(sp): CatalogFilterCachedShopProduct.objects.create(filter=filter, shop_product=sp) context_cache.bump_cache_for_shop_product(sp)
def update_matching_catalog_filters(shop_product_or_filter): if isinstance(shop_product_or_filter, CatalogFilter): CatalogFilterCachedShopProduct.objects.filter(filter=shop_product_or_filter).delete() for matching_product in shop_product_or_filter.get_matching_shop_products(): CatalogFilterCachedShopProduct.objects.create(filter=shop_product_or_filter, shop_product=matching_product) context_cache.bump_cache_for_shop_product(matching_product) return shop_product = shop_product_or_filter from shuup.campaigns.utils.matcher import get_matching_for_product q = _get_filter_query(shop_product) all_shop_products = [shop_product] + list(ShopProduct.objects.filter(q)) all_ids = [sp.pk for sp in all_shop_products] ids = get_matching_for_product( shop_product_or_filter, provide_category="campaign_catalog_filter", skippable_classes=[CatalogFilter] # these will be handled separately in update_matching_category_filters ) CatalogFilterCachedShopProduct.objects.filter(filter__id__in=ids, shop_product__id__in=all_ids).delete() for filter in CatalogFilter.objects.filter(id__in=ids): for sp in all_shop_products: if filter.matches(sp): CatalogFilterCachedShopProduct.objects.create(filter=filter, shop_product=sp) context_cache.bump_cache_for_shop_product(sp)
def process(self, request, ids): shop = get_shop(request) if isinstance(ids, string_types) and ids == "all": query = Q(shop=shop) else: query = Q(pk__in=ids, shop=shop) ShopProduct.objects.filter(query).update(visibility=ShopProductVisibility.NOT_VISIBLE) for shop_product in ShopProduct.objects.filter(query).iterator(): context_cache.bump_cache_for_shop_product(shop_product)
def save(self, *args, **kwargs): warnings.warn( "The CatalogCampaign discount module will be removed on next major version.", DeprecationWarning) super(CatalogCampaign, self).save(*args, **kwargs) self.filters.update(active=self.active) for f in self.filters.all(): for matching_product in f.get_matching_shop_products(): context_cache.bump_cache_for_shop_product(matching_product) self.conditions.update(active=self.active)
def process(self, request, ids): shop = get_shop(request) if isinstance(ids, string_types) and ids == "all": query = Q(shop=shop) else: query = Q(product__pk__in=ids, shop=shop) ShopProduct.objects.filter(query).update(visibility=ShopProductVisibility.NOT_VISIBLE) for shop_product in ShopProduct.objects.filter(query).iterator(): context_cache.bump_cache_for_shop_product(shop_product)
def update_matching_category_filters(shop_product, ids): filters = CategoryFilter.objects.filter(categories__id__in=ids) q = _get_filter_query(shop_product) all_shop_products = [shop_product] + list(ShopProduct.objects.filter(q)) all_ids = [sp.pk for sp in all_shop_products] CatalogFilterCachedShopProduct.objects.filter(filter__in=filters, shop_product__id__in=all_ids).delete() for filter in filters: for sp in all_shop_products: if filter.matches(sp): CatalogFilterCachedShopProduct.objects.create(filter=filter, shop_product=sp) context_cache.bump_cache_for_shop_product(sp) # is this necessary, smells like double