Esempio n. 1
0
    def render(self, context):
        request = value_or_none('request', context)
        product = value_or_literal(self._product, context)
        basket_prefix = value_or_literal(self._basket_prefix_name, context)

        template_name = value_or_literal(self._template_name, context)
        if not template_name:
            template_name = 'cubane/ishop/elements/add_to_basket.html'

        # construct return url
        category = product.primary_category
        if category:
            return_url = reverse('shop.category', args=[category.slug, category.pk])
        else:
            return_url = ''

        # render add to basket form
        form = AddToBasketForm(request=request, product=product, prefix=basket_prefix, with_varieties=self._with_varieties)
        t = get_template(template_name)
        d = {
            'product': product,
            'form': form,
            'basket_prefix': basket_prefix,
            'post_url': reverse('shop.basket.add') + '?r=%s' % return_url
        }
        with context.push(**d):
            return t.render(context)
Esempio n. 2
0
    def render(self, context):
        image = value_or_none(self.image, context)
        shape = value_or_literal(self.shape, context)
        clippath = value_or_literal(self.clippath, context)

        if shape:
            if shape not in settings.IMAGE_SHAPES and shape != 'original':
                return template_error("Shape '%s' not defined." % shape)
        else:
            shape = 'original'

        return render_svg_image(image, shape, clippath)
Esempio n. 3
0
    def render(self, context):
        image = value_or_none(self.image, context)
        shape = value_or_literal(self.shape, context)

        # additional attributes
        if self.attr:
            attr = value_or_literal(self.attr, context)
        else:
            attr = None

        return self.render_image(image, shape, self.noscript, attr,
                                 self.inline)
Esempio n. 4
0
 def render(self, context):
     settings = get_cms_settings()
     if settings and settings.image_placeholder_id:
         shape = value_or_literal(self.shape, context)
         return self.render_image(settings.image_placeholder, shape, noscript=False)
     else:
         return ''
Esempio n. 5
0
    def render(self, context):
        # resolve target (none, category or product)
        if self._target == None:
            target = None
        else:
            target = value_or_literal(self._target, context)
            if target == 'None': target = None

        # resolve sep
        request = value_or_none('request', context)
        sep = value_or_literal(self._sep, context)

        # build list of pages based on given target
        items = [('Home', '/')]
        if target == None:
            pass
        elif isinstance(target, str) or isinstance(target, unicode):
            # static page
            items.append((target, make_absolute_url(request.path)))
        elif isinstance(target, get_category_model()):
            # category page
            items.extend([(c.title, c.get_absolute_url()) for c in target.get_path()])
        elif isinstance(target, get_product_model()):
            # product category first...
            if target.primary_category:
                items.extend([(c.title, c.get_absolute_url()) for c in target.primary_category.get_path()])

            # ...then the product itself
            items.append((target.title, target.get_absolute_url()))
        elif isinstance(target, ChildPage):
            # page/child page
            page = target.page
            items.append((page.title, page.get_absolute_url()))
            items.append((target.title, target.get_absolute_url()))
        elif isinstance(target, PageBase):
            # single cms page
            items.append((target.title, target.get_absolute_url()))
        else:
            raise ValueError('Invalid target argument: Must be instance of Category, Product or None.')

        t = get_template('cubane/ishop/elements/breadcrumbs.html')
        d = {
            'items': items,
            'sep': sep,
        }
        with context.push(**d):
            return t.render(context)
Esempio n. 6
0
    def render(self, context):
        image = value_or_none(self.image, context)
        shape = value_or_literal(self.shape, context)

        # additional attributes
        if self.attr:
            attr = value_or_literal(self.attr, context)
        else:
            attr = None

        if shape:
            if shape not in settings.IMAGE_SHAPES and shape != 'original':
                return template_error("Shape '%s' not defined." % shape)
        else:
            shape = 'original'

        return render_background_image_attr(image, shape, self.height, attr)
Esempio n. 7
0
    def render(self, context):
        request = context.get('request')

        price = value_or_literal(self._price, context)
        if price is not None:
            return get_shop_price(price)
        else:
            return ''
Esempio n. 8
0
    def render(self, context):
        request = context.get('request')
        currency = context.get('CURRENCY')

        product = value_or_literal(self._product, context)
        if product and isinstance(product, get_product_model()):
            return u'%s%.2f' % (currency, product.previous_price)
        else:
            return u''
Esempio n. 9
0
    def render(self, context):
        form = value_or_none(self.form, context)
        enctype = value_or_literal(self.enctype, context)

        if form == None:
            return ''

        t = self.get_template()
        d = {'form': form, 'enctype': enctype}
        with context.push(**d):
            return t.render(context)
Esempio n. 10
0
    def render(self, context):
        request = context.get('request')

        product = value_or_literal(self._product, context)
        if product:
            if isinstance(product, get_product_model()):
                amount = product.price
            else:
                amount = product

            return get_shop_price(amount)
        else:
            return ''
Esempio n. 11
0
    def render(self, context):
        """
        Render resource tag.
        """
        target = value_or_literal(self.target, context)
        css_media = value_or_literal(self.css_media, context)

        # async
        if self.is_async is not None:
            is_async = value_or_literal(self.is_async, context)
        elif self.ext == 'js':
            is_async = True
        else:
            is_async = False

        # additonal_data
        if self.additional_data is not None:
            additional_data = value_or_literal(self.additional_data, context)
        else:
            additional_data = None

        if css_media and css_media not in settings.CSS_MEDIA:
            raise template.TemplateSyntaxError(
                ("'resources' only accepts the following values for css_media argument: " +
                 "%s."
                ) % settings.CSS_MEDIA
            )

        # if target is not defined, just ignore it.
        if target not in get_resource_target_definition():
            return ''

        if self.inline:
            if not settings.MINIFY_RESOURCES:
                resources = get_resources(target, self.ext)
                content = '\n'.join([get_resource(url) for url in resources])
            else:
                content = get_resource(
                    get_minified_filename(
                        target,
                        self.ext,
                        'screen' if self.ext == 'css' else None,
                        self.get_identifier()
                    )
                )

            return self.inline_include(content, additional_data, css_media)
        else:
            if not settings.MINIFY_RESOURCES:
                resources = get_resources(target, self.ext, css_media)
                return ''.join([
                    self.include(url, css_media, is_async, additional_data) for url in resources
                ])
            else:
                return self.include(
                    get_minified_filename(
                        target,
                        self.ext,
                        css_media,
                        self.get_identifier()
                    ), css_media, is_async, additional_data
                )
Esempio n. 12
0
 def render(self, context):
     block = value_or_literal(self._block_name, context)
     return mark_safe(context.get('request').client.content.get(block))
Esempio n. 13
0
 def render(self, context):
     return value_or_literal(self.obj, context).get_excerpt(length=self.length)