def product(self): product_id = self.request.matchdict.get("product_id") if not util.is_uuid(product_id): # it's not really a product ID, but a search string from a bot. raise HTTPFound("/ecom/search?search=%s" % product_id) prod = Product.load(product_id) self.redir_if(not prod or not prod.enabled or not prod.web_visible) page = self.request.matchdict.get( "page", util.nvl(prod.render_template, "product") ) # /product/{product_id}/{page} self.session["last_product_id"] = product_id self.session["back_link"] = "/product/%s" % product_id params = self.params() self._add_to_recent_products(prod) params["product"] = prod params["products_also_liked"] = SmartCatalog.also_liked_product_list(prod, params["campaign"]) params["products_related"] = SmartCatalog.related_product_list(prod, params["campaign"]) params["product_attributes"] = self._prep_product_attributes(prod.get_product_attributes()) params["attrs"] = prod.get_attrs() params["price"] = SmartPricing.product_price(prod, params["campaign"]) (params["seo_title"], params["seo_keywords"], params["seo_description"]) = SmartSeo.product_seo( prod, self.request.ctx.site ) return self.render(page, params)
def category(self): # /category/{category_id}/{page} page = self.request.matchdict.get("page", "category") category_id = util.to_uuid(self.request.matchdict.get("category_id")) category = ProductCategory.load(category_id) self.redir_if(not category) self.session["back_link"] = "/category/%s" % category_id params = self.params() params["products"] = util.page_list( SmartCatalog.category_product_list(self.request.ctx.campaign, category_id), self.request.GET.get("offset"), self.request.GET.get("limit"), ) params["category"] = category (params["seo_title"], params["seo_keywords"], params["seo_description"]) = SmartSeo.category_seo( category, self.request.ctx.site ) return self.render(page, params)
def content(self): page = self.request.matchdict.get("page", "content") params = self.params() params["content_name"] = content_name = self.request.matchdict.get("content_name") content = Content.find_by_name(self.request.ctx.site, content_name) if content: (params["seo_title"], params["seo_keywords"], params["seo_description"]) = SmartSeo.obj_seo( content, self.request.ctx.site ) return self.render(page, params)