class PrependWidget(Widget):
    u"""
    Widget that prepend boostrap-style span with data to specified base widget
    """

    def __init__(self, base_widget, data, *args, **kwargs):
        u"""Initialise widget and get base instance"""
        super(PrependWidget, self).__init__(*args, **kwargs)
        self.base_widget = base_widget(*args, **kwargs)
        self.data = data

    def render(self, name, value, attrs=None):
        u"""Render base widget and add bootstrap spans"""
        field = self.base_widget.render(name, value, attrs)
        return mark_safe((
            u'<div class="input-prepend">'
            u'    <span class="add-on">%(data)s</span>%(field)s'
            u'</div>'
        ) % {'field': field, 'data': self.data})