From cfe99a922ba8560ba971778aaeba7440ba3037f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Reni=C3=A9?= Date: Wed, 8 Dec 2010 22:59:22 +0100 Subject: [PATCH] ClearableFileInput that works for real --- floppyforms/fields.py | 4 ++++ .../floppyforms/clearable_input.html | 8 ++++---- floppyforms/widgets.py | 19 ++++++++++++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/floppyforms/fields.py b/floppyforms/fields.py index d2adae1..a6a0994 100644 --- a/floppyforms/fields.py +++ b/floppyforms/fields.py @@ -33,6 +33,10 @@ class FileField(FloppyField, forms.FileField): widget = ClearableFileInput +class ImageField(FloppyField, forms.ImageField): + widget = ClearableFileInput + + class MultipleChoiceField(forms.MultipleChoiceField): widget = SelectMultiple diff --git a/floppyforms/templates/floppyforms/clearable_input.html b/floppyforms/templates/floppyforms/clearable_input.html index 8b86fdb..290f8a9 100644 --- a/floppyforms/templates/floppyforms/clearable_input.html +++ b/floppyforms/templates/floppyforms/clearable_input.html @@ -1,8 +1,8 @@ {% if value.url %}{{ initial_text }}: {{ value }} {% if not required %} - -
-{% endif %} + + +{% endif %}
{{ input_text }}: {% endif %} - + diff --git a/floppyforms/widgets.py b/floppyforms/widgets.py index 77ab1dd..6351b41 100644 --- a/floppyforms/widgets.py +++ b/floppyforms/widgets.py @@ -12,12 +12,13 @@ class FloppyInput(forms.TextInput): def get_context_data(self): return {} - def render(self, name, value, attrs=None, extra_context={}): + def get_context(self, name, value, attrs=None, extra_context={}): context = { 'type': self.input_type, 'name': name, 'hidden': self.is_hidden, 'required': self.is_required, + 'value': '', } context.update(extra_context) @@ -34,6 +35,11 @@ def render(self, name, value, attrs=None, extra_context={}): if value == True: attrs[key] = False context['attrs'] = attrs + return context + + def render(self, name, value, attrs=None, extra_context={}): + context = self.get_context(name, value, attrs=attrs, + extra_context=extra_context) return loader.render_to_string(self.template_name, context) @@ -74,7 +80,7 @@ def render(self, name, value, attrs=None): return super(FileInput, self).render(name, None, attrs=attrs) -class ClearableFileInput(FileInput): +class ClearableFileInput(FileInput, forms.ClearableFileInput): template_name = 'floppyforms/clearable_input.html' initial_text = ugettext_lazy('Currently') input_text = ugettext_lazy('Change') @@ -82,11 +88,18 @@ class ClearableFileInput(FileInput): def get_context_data(self): ctx = super(ClearableFileInput, self).get_context_data() - ctx['initial'] = self.initial_text + ctx['initial_text'] = self.initial_text ctx['input_text'] = self.input_text ctx['clear_checkbox_label'] = self.clear_checkbox_label return ctx + def render(self, name, value, attrs=None, extra_context={}): + context = self.get_context(name, value, attrs=attrs, + extra_context=extra_context) + context['checkbox_name'] = self.clear_checkbox_name(name) + context['checkbox_id'] = self.clear_checkbox_id(context['checkbox_name']) + return loader.render_to_string(self.template_name, context) + class DateInput(forms.DateInput, FloppyInput): input_type = 'date'