Exemplo n.º 1
0
    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)