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
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
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
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
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