def render(self, context): """Renders the portlet as html. """ object = context.get("product") slug_not_to_display = "" limit = settings.LFS_RECENT_PRODUCTS_LIMIT if object: ctype = ContentType.objects.get_for_model(object) if ctype.name == u"product": slug_not_to_display = object.slug limit = settings.LFS_RECENT_PRODUCTS_LIMIT + 1 request = context.get("request") products = [] for slug in request.session.get("RECENT_PRODUCTS", [])[:limit]: if slug == slug_not_to_display: continue product = lfs_get_object(Product, slug=slug) if product and product.is_product_with_variants() and product.has_variants(): product = product.get_default_variant() products.append(product) return render_to_string("lfs/portlets/recent_products.html", RequestContext(request, { "title": self.title, "products": products, }))
def test_lfs_get_object(self): self.assertTrue( lfs_get_object(Product, slug=u'zażółćgęśląjaźń') is None)
def test_lfs_get_object(self): self.assertTrue(lfs_get_object(Product, slug=u'zażółćgęśląjaźń') is None)
def shop_view(request,slug="", start=1, template_name="lfs/shop/shop.html"): """Displays the shop. """ shop = lfs_get_object_or_404(Shop, pk=1) #category = lfs_get_object_or_404(Category, slug='home-products') #all_products = category.get_all_products() #last_category = request.session.get("last_category") #if (last_category is None) or (last_category.slug != slug): # if "product-filter" in request.session: # del request.session["product-filter"] # if "price-filter" in request.session: # del request.session["price-filter"] try: default_sorting = settings.LFS_PRODUCTS_SORTING except AttributeError: default_sorting = "price" #sorting = request.session.get("sorting", default_sorting) sorting = default_sorting #product_filter = request.session.get("product-filter", {}) #product_filter = product_filter.items() product_filter = {} cache_key = "%s-category-products-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, slug) sub_cache_key = "%s-start-%s-sorting-%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, start, sorting) filter_key = ["%s-%s" % (i[0], i[1]) for i in product_filter] if filter_key: sub_cache_key += "-%s" % "-".join(filter_key) price_filter = request.session.get("price-filter") if price_filter: sub_cache_key += "-%s-%s" % (price_filter["min"], price_filter["max"]) temp = cache.get(cache_key) if temp is not None: try: return temp[sub_cache_key] except KeyError: pass else: temp = dict() category = lfs_get_object(Category, slug='home-products') if not category: return render_to_response(template_name, RequestContext(request, { "shop":shop })) # Calculates parameters for display. try: start = int(start) except (ValueError, TypeError): start = 1 format_info = category.get_format_info() amount_of_rows = format_info["product_rows"] amount_of_cols = format_info["product_cols"] amount = amount_of_rows * amount_of_cols all_products = lfs.catalog.utils.get_filtered_products_for_category( category, product_filter, price_filter, sorting) # prepare paginator paginator = Paginator(all_products, amount) try: current_page = paginator.page(start) except (EmptyPage, InvalidPage): current_page = paginator.page(paginator.num_pages) # Calculate products row = [] products = [] for i, product in enumerate(current_page.object_list): if product.is_product_with_variants(): default_variant = product.get_variant_for_category(request) if default_variant: product = default_variant image = None product_image = product.get_image() if product_image: image = product_image.image row.append({ "obj": product, "slug": product.slug, "name": product.get_name(), "image": image, "price_unit": product.price_unit, "price_includes_tax": product.price_includes_tax(request), }) if (i + 1) % amount_of_cols == 0: products.append(row) row = [] if len(row) > 0: products.append(row) amount_of_products = all_products.count() # Calculate urls pagination_data = lfs_pagination(request, current_page, url=category.get_absolute_url()) #render_template = category.get_template_name() #if render_template != None: # template_name = render_template return render_to_response(template_name, RequestContext(request, { "category": category, "products": products, "amount_of_products": amount_of_products, "pagination": pagination_data, "all_products": all_products, "shop":shop }))