Exemple #1
0
class TemplateDisplay(DisplayWidget):
    PATTERN = 2
    TEMPLATE = 3

    def __init__(self,
                 widget,
                 template,
                 template_format=2,
                 marked_safe=True,
                 **kwargs):
        self.marked_safe = marked_safe
        if template_format == self.PATTERN:
            self.template = template
            self.render = self._render_pattern
        else:
            self.template = Template(template)
            self.render = self._render_template
        self.widget = widget
        super(TemplateDisplay, self).__init__(**kwargs)

    def _render_pattern(self, name, value, attrs=None, renderer=None):
        result = self.widget.render(name, value, attrs,
                                    renderer) if self.widget else value
        if self.is_null(value):
            return result or ""

        if result is None:
            return ""
        if self.marked_safe:
            return mark_safe(self.template.format(result))
        else:
            return self.template.format(result)

    def _render_template(self, name, value, attrs=None, renderer=None):
        result = self.widget.render(name, value, attrs,
                                    renderer) if self.widget else value
        if not value:
            return result or ""

        if result is None:
            return ""
        if self.marked_safe:
            return mark_safe(self.template.render(Context({"object": result})))
        else:
            return self.template.render(Context({"object": result}))