# -*- coding: utf-8 -*-

# python imports
from urllib import unquote

# django imports
from django.forms.widgets import CheckboxInput, ClearableFileInput
from django.utils.encoding import force_unicode
from django.utils.html import conditional_escape, escape
from django.utils.safestring import mark_safe


class DBClearableFileInput(ClearableFileInput):
    """
        Editing the download-link inner text.
    """
    def render(self, name, value, attrs=None):
        substitutions = {
            'initial_text': self.initial_text,
            'input_text': self.input_text,
            'clear_template': '',
            'clear_checkbox_label': self.clear_checkbox_label,
        }
        template = u'%(input)s'
        substitutions['input'] = super(ClearableFileInput, self).render(
            name, value, attrs
        )

        if value and hasattr(value, "url"):
            template = self.template_with_initial
            substitutions['initial'] = u'<a href="%s">%s</a>' % (
                escape(value.url),
                escape(
                    force_unicode(
                        unquote(
                            value.url.split('%2F')[-1]  # <-- EDITED HERE
                        )
                    )
                )
            )
            if not self.is_required:
                checkbox_name = self.clear_checkbox_name(name)
                checkbox_id = self.clear_checkbox_id(checkbox_name)
                substitutions['clear_checkbox_name'] = \
                    conditional_escape(checkbox_name)
                substitutions['clear_checkbox_id'] = \
                    conditional_escape(checkbox_id)
                substitutions['clear'] = CheckboxInput().render(
                    checkbox_name, False, attrs={'id': checkbox_id}
                )
                substitutions['clear_template'] = \
                    self.template_with_clear % substitutions

        return mark_safe(template % substitutions)
