Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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