コード例 #1
0
ファイル: general.py プロジェクト: teserak/shoop
def get_best_selling_products(context,
                              n_products=12,
                              cutoff_days=30,
                              orderable_only=True):
    request = context["request"]
    data = get_best_selling_product_info(shop_ids=[request.shop.pk],
                                         cutoff_days=cutoff_days)
    product_ids = [d[0] for d in data][:n_products]

    products = []
    for product in Product.objects.filter(id__in=product_ids):
        shop_product = product.get_shop_instance(request.shop)
        if orderable_only:
            for supplier in Supplier.objects.all():
                if shop_product.is_orderable(
                        supplier, request.customer,
                        shop_product.minimum_purchase_quantity):
                    products.append(product)
                    break
        elif shop_product.is_visible(request.customer):
            products.append(product)
    products = cache_product_things(request, products)
    products = sorted(
        products, key=lambda p: product_ids.index(p.id))  # pragma: no branch
    return products
コード例 #2
0
ファイル: general.py プロジェクト: Reivax84/shoop
def get_best_selling_products(context, n_products=12, cutoff_days=30, orderable_only=True):
    request = context["request"]
    data = get_best_selling_product_info(shop_ids=[request.shop.pk], cutoff_days=cutoff_days)
    product_ids = [d[0] for d in data][:n_products]
    products = get_visible_products(
        context, n_products, filter_dict={"id__in": product_ids}, orderable_only=orderable_only
    )
    products = cache_product_things(request, products)
    products = sorted(products, key=lambda p: product_ids.index(p.id))  # pragma: no branch
    products = products[:n_products]
    return products
コード例 #3
0
def get_best_selling_products(context, n_products=12, cutoff_days=30, no_variation_children=False):
    request = context["request"]
    data = get_best_selling_product_info(
        shop_ids=[request.shop.pk],
        cutoff_days=cutoff_days
    )
    product_ids = [d[0] for d in data][:n_products * 2]
    products = _get_list_products(request).filter(id__in=product_ids)
    if no_variation_children:  # pragma: no branch
        products = products.filter(variation_parent=None)
    products = cache_product_things(request, products)
    products = sorted(products, key=lambda p: product_ids.index(p.id))  # pragma: no branch
    products = products[:n_products]
    return products
コード例 #4
0
def get_best_selling_products(context,
                              n_products=12,
                              cutoff_days=30,
                              orderable_only=True):
    request = context["request"]
    data = get_best_selling_product_info(shop_ids=[request.shop.pk],
                                         cutoff_days=cutoff_days)
    product_ids = [d[0] for d in data][:n_products]
    products = get_visible_products(
        context,
        n_products,
        filter_dict={"id__in": product_ids},
        orderable_only=orderable_only,
    )
    products = cache_product_things(request, products)
    products = sorted(
        products, key=lambda p: product_ids.index(p.id))  # pragma: no branch
    products = products[:n_products]
    return products
コード例 #5
0
ファイル: general.py プロジェクト: 00WhengWheng/shuup
def get_best_selling_products(context, n_products=12, cutoff_days=30, orderable_only=True):
    request = context["request"]
    data = get_best_selling_product_info(
        shop_ids=[request.shop.pk],
        cutoff_days=cutoff_days
    )
    product_ids = [d[0] for d in data][:n_products]

    products = []
    for product in Product.objects.filter(id__in=product_ids):
        shop_product = product.get_shop_instance(request.shop)
        if orderable_only:
            for supplier in Supplier.objects.all():
                if shop_product.is_orderable(supplier, request.customer, shop_product.minimum_purchase_quantity):
                    products.append(product)
                    break
        elif shop_product.is_visible(request.customer):
            products.append(product)
    products = cache_product_things(request, products)
    products = sorted(products, key=lambda p: product_ids.index(p.id))  # pragma: no branch
    return products