Exemple #1
0
    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(value))))
            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)
Exemple #2
0
 def render_option(self, selected_choices, option_value, option_label):
     option_value = force_unicode(option_value)
     selected_html = (option_value
                      in selected_choices) and u' selected="selected"' or ''
     return u'<option value="%s"%s>%s</option>' % (
         escape(option_value), selected_html,
         conditional_escape(force_unicode(option_label)))
Exemple #3
0
 def render_options(self, choices, selected_choices):
     # Normalize to strings.
     selected_choices = set([force_unicode(v) for v in selected_choices])
     output = []
     for option_value, option_label in chain(self.choices, choices):
         if isinstance(option_label, (list, tuple)):
             output.append(u'<optgroup label="%s">' % escape(force_unicode(option_value)))
             for option in option_label:
                 output.append(self.render_option(selected_choices, *option))
             output.append(u'</optgroup>')
         else:
             output.append(self.render_option(selected_choices, option_value, option_label))
     return u'\n'.join(output)
Exemple #4
0
    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(value))))
            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)
Exemple #5
0
 def render_options(self, choices, selected_choices):
     # Normalize to strings.
     selected_choices = set([force_unicode(v) for v in selected_choices])
     output = []
     for option_value, option_label in chain(self.choices, choices):
         if isinstance(option_label, (list, tuple)):
             output.append(u'<optgroup label="%s">' %
                           escape(force_unicode(option_value)))
             for option in option_label:
                 output.append(self.render_option(selected_choices,
                                                  *option))
             output.append(u'</optgroup>')
         else:
             output.append(
                 self.render_option(selected_choices, option_value,
                                    option_label))
     return u'\n'.join(output)
Exemple #6
0
 def render_option(self, selected_choices, option_value, option_label):
     option_value = force_unicode(option_value)
     selected_html = (option_value in selected_choices) and u' selected="selected"' or ''
     return u'<option value="%s"%s>%s</option>' % (
         escape(option_value), selected_html,
         conditional_escape(force_unicode(option_label)))