Exemplo n.º 1
0
def criterion_countries_changed(sender, instance, action, reverse, model, pk_set, **kwargs):
    if action in ('post_add', 'post_remove', 'post_clear'):
        if not reverse:
            delete_cache(u'country_values_{}'.format(instance.pk))
        else:
            for pk in pk_set:
                delete_cache(u'country_values_{}'.format(pk))
Exemplo n.º 2
0
def update_static_block_cache(instance):
    """Deletes all static block relevant caches.
    """
    delete_cache("%s-static-block-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))

    for category in instance.categories.all():
        delete_cache("%s-category-inline-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, category.slug))
Exemplo n.º 3
0
def update_topseller_cache(topseller):
    """Deletes all topseller relevant caches.
    """
    delete_cache("%s-topseller" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    product = topseller.product
    for category in product.get_categories(with_parents=True):
        delete_cache("%s-topseller-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, category.id))
Exemplo n.º 4
0
def manufacturer_changed_listener(sender, **kwargs):
    # filtered lists of products assigned to manufacturer used at manufacturer page
    delete_cache("%s-manufacturer-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, sender.slug))
    # list of all manufacturer products
    delete_cache("%s-manufacturer-all-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, sender.pk))
    # if manufacturer assignment was changed then product navigation might be different too
    invalidate_cache_group_id('product_navigation')
Exemplo n.º 5
0
def update_topseller_cache(topseller):
    """Deletes all topseller relevant caches.
    """
    delete_cache("%s-topseller" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    product = topseller.product
    for category in product.get_categories(with_parents=True):
        delete_cache("%s-topseller-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, category.id))
Exemplo n.º 6
0
def criterion_countries_changed(sender, instance, action, reverse, model,
                                pk_set, **kwargs):
    if action in ('post_add', 'post_remove', 'post_clear'):
        if not reverse:
            delete_cache(u'country_values_{}'.format(instance.pk))
        else:
            for pk in pk_set:
                delete_cache(u'country_values_{}'.format(pk))
Exemplo n.º 7
0
def manufacturer_changed_listener(sender, **kwargs):
    # filtered lists of products assigned to manufacturer used at manufacturer page
    delete_cache("%s-manufacturer-products-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, sender.slug))
    # list of all manufacturer products
    delete_cache("%s-manufacturer-all-products-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, sender.pk))
    # if manufacturer assignment was changed then product navigation might be different too
    invalidate_cache_group_id('product_navigation')
Exemplo n.º 8
0
def update_static_block_cache(instance):
    """Deletes all static block relevant caches.
    """
    delete_cache("%s-static-block-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))

    for category in instance.categories.all():
        delete_cache("%s-category-inline-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, category.slug))
Exemplo n.º 9
0
def order_item_listener(sender, instance, **kwargs):
    """Deletes topseller after an OrderItem has been updated. Topseller are
    calculated automatically on base of OrderItems, hence we have to take of
    that.
    """
    delete_cache("%s-topseller" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    try:
        for category in instance.product.get_categories(with_parents=True):
            delete_cache("%s-topseller-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, category.id))
    except:
        pass  # fail silently
Exemplo n.º 10
0
def order_item_listener(sender, instance, **kwargs):
    """Deletes topseller after an OrderItem has been updated. Topseller are
    calculated automatically on base of OrderItems, hence we have to take of
    that.
    """
    delete_cache("%s-topseller" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    try:
        for category in instance.product.get_categories(with_parents=True):
            delete_cache("%s-topseller-%s" %
                         (settings.CACHE_MIDDLEWARE_KEY_PREFIX, category.id))
    except:
        pass  # fail silently
Exemplo n.º 11
0
def product_pre_saved_listener(sender, instance, **kwargs):
    """ If product slug was changed we should have cleared slug based product cache"""
    # check if product already exists in database
    if instance.pk:
        if instance.is_variant():
            parent = instance.parent
        else:
            parent = instance

        delete_cache("%s-product-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))

        try:
            old_product = Product.objects.get(pk=parent.pk)
        except Product.DoesNotExist:
            pass
        else:
            delete_cache("%s-product-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, old_product.slug))
Exemplo n.º 12
0
def product_pre_saved_listener(sender, instance, **kwargs):
    """ If product slug was changed we should have cleared slug based product cache"""
    # check if product already exists in database
    if instance.pk:
        if instance.is_variant():
            parent = instance.parent
        else:
            parent = instance

        delete_cache("%s-product-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))

        try:
            old_product = Product.objects.get(pk=parent.pk)
        except Product.DoesNotExist:
            pass
        else:
            delete_cache(
                "%s-product-%s" %
                (settings.CACHE_MIDDLEWARE_KEY_PREFIX, old_product.slug))
Exemplo n.º 13
0
def product_categories_changed_listener(sender, **kwargs):
    instance = kwargs['instance']
    reverse = kwargs['reverse']
    pk_set = kwargs['pk_set']

    if reverse:
        product = instance
        delete_cache("%s-product-categories-%s-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, product.id, True))
        delete_cache("%s-product-categories-%s-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, product.id, False))
    else:
        if pk_set:
            for product in Product.objects.filter(pk__in=pk_set):
                delete_cache("%s-product-categories-%s-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, product.id, True))
                delete_cache("%s-product-categories-%s-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, product.id, False))
Exemplo n.º 14
0
def product_categories_changed_listener(sender, **kwargs):
    instance = kwargs['instance']
    reverse = kwargs['reverse']
    pk_set = kwargs['pk_set']

    if reverse:
        product = instance
        delete_cache("%s-product-categories-%s-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, product.id, True))
        delete_cache("%s-product-categories-%s-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, product.id, False))
    else:
        if pk_set:
            for product in Product.objects.filter(pk__in=pk_set):
                delete_cache(
                    "%s-product-categories-%s-%s" %
                    (settings.CACHE_MIDDLEWARE_KEY_PREFIX, product.id, True))
                delete_cache(
                    "%s-product-categories-%s-%s" %
                    (settings.CACHE_MIDDLEWARE_KEY_PREFIX, product.id, False))
Exemplo n.º 15
0
def tax_rate_deleted_listener(sender, instance, **kwargs):
    delete_cache(u'tax_rate_{}'.format(instance.pk))
Exemplo n.º 16
0
def customer_tax_deleted_listener(sender, instance, **kwargs):
    delete_cache(u'all_customer_taxes')
Exemplo n.º 17
0
def customer_tax_created_listener(sender, instance, created, **kwargs):
    if created:
        delete_cache(u'all_customer_taxes')
Exemplo n.º 18
0
def update_product_cache(instance):
    # If the instance is a product with variant or a variant we have to
    # delete also the parent and all other variants
    if instance.is_variant():
        parent = instance.parent
    else:
        parent = instance

    # if product was changed then we have to clear all product_navigation caches
    invalidate_cache_group_id('product_navigation')
    invalidate_cache_group_id('properties-%s' % parent.id)
    delete_cache("%s-product-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-product-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.slug))
    delete_cache("%s-product-images-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-related-products-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-product-categories-%s-False" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-product-categories-%s-True" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-default-variant-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    if parent.manufacturer:
        delete_cache(
            "%s-manufacturer-all-products-%s" %
            (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.manufacturer.pk))
        delete_cache(
            "%s-manufacturer-products-%s" %
            (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.manufacturer.slug))

    try:
        c = cache.get("%s-shipping-delivery-time" %
                      settings.CACHE_MIDDLEWARE_KEY_PREFIX)
        del c["%s-product-%s" %
              (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.slug)]
        cache.set(
            "%s-shipping-delivery-time" % settings.CACHE_MIDDLEWARE_KEY_PREFIX,
            c)
    except (KeyError, TypeError):
        pass

    for variant in parent.get_variants():
        delete_cache("%s-product-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-product-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.slug))
        delete_cache("%s-product-images-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-related-products-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-product-categories-%s-False" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-product-categories-%s-True" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-product-shipping-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.slug))
Exemplo n.º 19
0
def shipping_method_saved_listener(sender, instance, **kwargs):
    delete_cache("%s-shipping-delivery-time" %
                 settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    delete_cache("%s-shipping-delivery-time-cart" %
                 settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    delete_cache("all_active_shipping_methods")
Exemplo n.º 20
0
def update_cart_cache(instance):
    """Deletes all cart relevant caches.
    """
    if instance.user:
        delete_cache("%s-cart-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.user.pk))

    delete_cache("%s-cart-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.session))
    delete_cache("%s-cart-items-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-cart-costs-True-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-cart-costs-False-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-shipping-delivery-time-cart" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    delete_cache("%s-shipping-delivery-time" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
Exemplo n.º 21
0
def page_saved_listener(sender, instance, **kwargs):
    delete_cache("%s-page-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))
    delete_cache("%s-pages" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
Exemplo n.º 22
0
def customer_tax_created_listener(sender, instance, created, **kwargs):
    if created:
        delete_cache(u'all_customer_taxes')
Exemplo n.º 23
0
def customer_tax_deleted_listener(sender, instance, **kwargs):
    delete_cache(u'all_customer_taxes')
Exemplo n.º 24
0
def tax_rate_deleted_listener(sender, instance, **kwargs):
    delete_cache(u'tax_rate_{}'.format(instance.pk))
Exemplo n.º 25
0
def update_cart_cache(instance):
    """Deletes all cart relevant caches.
    """
    if instance.user:
        delete_cache("%s-cart-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.user.pk))

    delete_cache("%s-cart-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.session))
    delete_cache("%s-cart-items-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-cart-costs-True-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-cart-costs-False-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-shipping-delivery-time-cart" %
                 settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    delete_cache("%s-shipping-delivery-time" %
                 settings.CACHE_MIDDLEWARE_KEY_PREFIX)
Exemplo n.º 26
0
def update_category_cache(instance):

    # NOTE: ATM, we clear the whole cache if a category has been changed.
    # Otherwise is lasts to long when the a category has a lot of products
    # (1000s) and the shop admin changes a category.
    clear_cache()
    return
    delete_cache("%s-category-breadcrumbs-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))
    delete_cache("%s-category-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))
    delete_cache("%s-category-all-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))
    delete_cache("%s-category-categories-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))

    for category in Category.objects.all():
        delete_cache("%s-categories-portlet-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, category.slug))

    delete_cache("%s-category-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))

    delete_cache("%s-category-all-children-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-children-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-parents-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-all-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))

    # Note: As this is called "pre-saved" newly created categories don't have
    # the many-to-many attribute "products", hence we have to take care of it
    # here.
    try:
        for product in instance.products.all():
            update_product_cache(product)
    except ValueError:
        pass
Exemplo n.º 27
0
def update_product_cache(instance):
    # If the instance is a product with variant or a variant we have to
    # delete also the parent and all other variants
    if instance.is_variant():
        parent = instance.parent
    else:
        parent = instance

    # if product was changed then we have to clear all product_navigation caches
    invalidate_cache_group_id('product_navigation')
    invalidate_cache_group_id('properties-%s' % parent.id)
    delete_cache("%s-product-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-product-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.slug))
    delete_cache("%s-product-images-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-related-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-product-categories-%s-False" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-product-categories-%s-True" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    delete_cache("%s-default-variant-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.id))
    if parent.manufacturer:
        delete_cache("%s-manufacturer-all-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.manufacturer.pk))
        delete_cache("%s-manufacturer-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.manufacturer.slug))

    try:
        c = cache.get("%s-shipping-delivery-time" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
        del c["%s-product-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.slug)]
        cache.set("%s-shipping-delivery-time" % settings.CACHE_MIDDLEWARE_KEY_PREFIX, c)
    except (KeyError, TypeError):
        pass

    for variant in parent.get_variants():
        delete_cache("%s-product-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-product-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, parent.slug))
        delete_cache("%s-product-images-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-related-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-product-categories-%s-False" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-product-categories-%s-True" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.id))
        delete_cache("%s-product-shipping-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, variant.slug))
Exemplo n.º 28
0
def shipping_method_saved_listener(sender, instance, **kwargs):
    delete_cache("%s-shipping-delivery-time" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    delete_cache("%s-shipping-delivery-time-cart" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
    delete_cache("all_active_shipping_methods")
Exemplo n.º 29
0
def shipping_method_deleted_listener(sender, instance, **kwargs):
    delete_cache("all_active_shipping_methods")
Exemplo n.º 30
0
def shipping_method_deleted_listener(sender, instance, **kwargs):
    delete_cache("all_active_shipping_methods")
Exemplo n.º 31
0
def shop_saved_listener(sender, instance, **kwargs):
    delete_cache("%s-shop-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
Exemplo n.º 32
0
def shop_saved_listener(sender, instance, **kwargs):
    delete_cache("%s-shop-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
Exemplo n.º 33
0
def page_saved_listener(sender, instance, **kwargs):
    delete_cache("%s-page-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))
    delete_cache("%s-pages" % settings.CACHE_MIDDLEWARE_KEY_PREFIX)
Exemplo n.º 34
0
def update_category_cache(instance):

    # NOTE: ATM, we clear the whole cache if a category has been changed.
    # Otherwise is lasts to long when the a category has a lot of products
    # (1000s) and the shop admin changes a category.
    clear_cache()
    return
    delete_cache("%s-category-breadcrumbs-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))
    delete_cache("%s-category-products-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))
    delete_cache("%s-category-all-products-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))
    delete_cache("%s-category-categories-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))

    for category in Category.objects.all():
        delete_cache("%s-categories-portlet-%s" %
                     (settings.CACHE_MIDDLEWARE_KEY_PREFIX, category.slug))

    delete_cache("%s-category-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.slug))

    delete_cache("%s-category-all-children-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-children-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-parents-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-products-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))
    delete_cache("%s-category-all-products-%s" %
                 (settings.CACHE_MIDDLEWARE_KEY_PREFIX, instance.id))

    # Note: As this is called "pre-saved" newly created categories don't have
    # the many-to-many attribute "products", hence we have to take care of it
    # here.
    try:
        for product in instance.products.all():
            update_product_cache(product)
    except ValueError:
        pass