def articles(self): """Returns list of dictionary of articles :rtype: list """ res = [] context = aq_inner(self.context) if not getattr(context, 'related_articles', None): context = aq_parent(context) if not getattr(context, 'related_articles', None): context = aq_parent(context) if getattr(context, 'related_articles', None): shopping_site = IShoppingSite(self.context) path = shopping_site.shop_path() for uuid in context.related_articles: obj = shopping_site.get_object(IArticle, UID=uuid, path=path, review_state='published') if obj is not None: art = IArticleAdapter(obj) res.append({ 'gross': art.gross(), 'image_url': art.image_url(size='preview'), 'title': art.title(), 'url': obj.absolute_url(), }) return res[:4]
def test_image_url(self): article1 = self.create_content( "collective.cart.core.Article", title="Ärticle1", sku="SKÖ1", money=self.money("12.40"), vat_rate=24.0 ) adapter = IArticleAdapter(article1) self.assertEqual(adapter.image_url(), "http://nohost/plone/fallback.png") article2 = self.create_content( "collective.cart.core.Article", article1, title="Ärticle2", sku="SKÖ1", money=self.money("12.40"), vat_rate=24.0, ) adapter = IArticleAdapter(article2) self.assertEqual(adapter.image_url(), "http://nohost/plone/fallback.png") article1.image = mock.Mock() self.assertEqual(adapter.image_url(), "http://nohost/plone/article1/@@images/image") adapter.context.image = mock.Mock() self.assertEqual(adapter.image_url(), "http://nohost/plone/article1/article2/@@images/image")
def articles(self): """Returns list of dictionary of articles :rtype: list """ res = [] shopping_site = IShoppingSite(self.context) articles = super(ArticlesInArticleViewlet, self).articles() if articles: for item in IContentListing(articles): obj = item.getObject() adapter = IArticleAdapter(obj) soldout = adapter.soldout() quantity_max = adapter.quantity_max() numbers = xrange(1, quantity_max + 1) quantity_size = len(str(quantity_max)) subarticles = [] if obj.use_subarticle: subarticles = adapter.subarticles() res.append({ 'description': item.Description(), 'discount_end': adapter.discount_end(), 'gross': shopping_site.format_money(adapter.gross()), 'id': item.getId(), 'image_url': adapter.image_url(size='mini'), 'klass': 'add-to-cart {}'.format(item.getId()), 'money': shopping_site.format_money(item.money), 'numbers': numbers, 'quantity_max': quantity_max, 'quantity_size': quantity_size, 'soldout': soldout, 'subarticles': subarticles, 'title': adapter.title(), 'url': item.getURL(), 'uuid': item.uuid(), 'vat_rate': IVATAdapter(self.context).percent(item.vat_rate) }) return res