Beispiel #1
0
    def get_options(self, context):
        resolved_options = {}

        if self.takes_request:
            resolved_options['request'] = context.get('request', None)

        count = 0
        for key, expr in self.options:
            noresolve = {u'1': True, u'0': False}
            value = noresolve.get(unicode(expr), expr.resolve(context))
            if count < len(self.required_params) and not value:
                # TODO currently assuming that falsy values are invalid here;
                # ideally we'd raise a VariableDoesNotExist only if the expr
                # doesn't resolve, but django doesn't seem to want to let us
                # when using parser.compile_filter(...) instead of
                # template.Variable(...)
                raise template.VariableDoesNotExist('No value supplied for argument %s' % key)

            resolved_options[key] = value
            count += 1

        renderer = self.get_renderer(context)
        if renderer:
            resolved_options['renderer'] = renderer

        return resolved_options
Beispiel #2
0
    def render(self, context):
        try:
            self.value = self.value.resolve(context)
            if not isinstance(self.value, ImageFieldFile):
                raise template.VariableDoesNotExist(
                    'Image argument should be an ImageField')
            images = context.dicts[0].setdefault('_templated_docs_imgs', {})

            id = len(images)
            z_index = id + 3  # Magic
            width = self.value.width * PIXEL_TO_CM
            height = self.value.height * PIXEL_TO_CM
            filename = os.path.basename(self.value.name)
            basename = os.path.splitext(filename)[0]

            images[self.value.path] = self.value
            return ('<draw:frame draw:style-name="gr%(z_index)s" '
                    'draw:name="%(basename)s" '
                    'draw:id="id%(id)s" '
                    'text:anchor-type="char" svg:width="%(width)fcm" '
                    'svg:height="%(height)fcm" draw:z-index="%(z_index)s">'
                    '<draw:image xlink:href="Pictures/%(filename)s" '
                    'xlink:type="simple" xlink:show="embed" '
                    'xlink:actuate="onLoad"/></draw:frame>') % locals()
        except template.VariableDoesNotExist:
            return ''
Beispiel #3
0
def _get_variables_from_context(context, tag_name):
    if 'request' in context:
        request = context['request']
    else:
        request = get_current_request()

    if request is None:
        raise template.VariableDoesNotExist(
            'The {} template tag requires a "request" to be present in the template context. Consider using '
            '"emulate_http_request" if you are rendering the template in a celery task.'
            .format(tag_name))

    message = context.get('message')
    if message is None:
        raise template.VariableDoesNotExist(
            f'The {tag_name} template tag requires a "message" to be present in the template context.'
        )

    return request.site, request.user, message
Beispiel #4
0
    def do_takes_current_page(context, *args, **kwargs):
        page = get_page_from_context(context, kwargs)

        if not page:
            page = get_default_news_page()
        if page is None:
            raise template.VariableDoesNotExist("Could not determine the current page from the template context.")
        kwargs["page"] = page

        return func(context, *args, **kwargs)
Beispiel #5
0
    def render(self, context):
        try:
            namespace = self.namespace.resolve(context)
        except template.VariableDoesNotExist:
            namespace = None
        try:
            name = self.name.resolve(context)
        except template.VariableDoesNotExist(context):
            name = None

        set_active_tab(context, namespace, name)
        return ''
Beispiel #6
0
	def render(self, context):
		try:
			namespace = self.namespace.resolve(context)
		except template.VariableDoesNotExist:
			namespace = None
		try:
			  name = self.name.resolve(context)
		except template.VariableDoesNotExist(context):
			name = None
		if is_active_tab(context, namespace, name):
			return self.nodelist_true.render(context)
		return self.nodelist_false.render(context)
Beispiel #7
0
def active_page(request, view_name):
    output: str

    if request:
        try:
            output = 'colorlib-active' if resolve(
                request.path_info).url_name == view_name else ''
        except Resolver404 as e:
            raise template.VariableDoesNotExist(
                'Error setting active_page tag', e)

    return output
Beispiel #8
0
 def validate_context(self, context_dict):
     if 'site' not in context_dict:
         context_dict['site'] = Site.objects.get_current()
     for required_context in self.required_contexts.all():
         if required_context.key not in context_dict:
             raise template.VariableDoesNotExist(required_context.key)
         var_type = type(context_dict[required_context.key])
         if required_context.type and not issubclass(
                 var_type, required_context.type.model_class()):
             raise template.TemplateSyntaxError(
                 "invalid type for %s; expected %s, got %s" %
                 (required_context.key, required_context.type.model_class(),
                  var_type))
     return True
Beispiel #9
0
def resolve_value(variable, context):
    """
    If given a ``template.Variable`` or ``template.FilterExpression``,
    return the resolved value, otherwise return the given variable object.
    """
    if hasattr(variable, "resolve"):
        if isinstance(variable, template.FilterExpression):
            result = variable.resolve(context, ignore_failures=True)
            if result is None:
                raise template.VariableDoesNotExist(
                    'Failed lookup for "%s"' % variable
                )
            return result
        return variable.resolve(context)
    return variable
Beispiel #10
0
    def render(self, context):
        """
        Render the results into the context.

        :param context: The context as provided by django.
        :type context: dict
        :rtype: empty string
        """
        try:
            obj = self.obj.resolve(context)
        except template.VariableDoesNotExist:
            msg = _("The model object does not exist in the context, "
                    "found '{}'").format(self.obj)
            log.warning(ugettext(msg))
            raise template.VariableDoesNotExist(msg)

        context[self.name] = obj.get_key_value(self.slug)
        return ''
Beispiel #11
0
    def render(self, context):
        search_result = context[self.search_result]

        if self.field[0] in ['"', "'"]:
            field = self.field[1:-1]
        else:
            field = template.Variable(self.field).resolve(context)

        if field not in search_result:
            raise template.VariableDoesNotExist('field {} is not a member of the search result'.format(field))

        text = ''

        if search_result[field]:
            text = html_tag.sub('', search_result[field])

        if 'highlight' in search_result.meta:
            if field in search_result.meta.highlight:
                text = format_highlight(search_result.meta.highlight[field])

        return text