root/plesonet_filefield/trunk/widgets.py

Revision 25, 1.6 KB (checked in by nazar, 4 years ago)

initial commit for image field and file field

Line 
1from django import forms
2from django.utils.translation import ugettext as _
3from django.utils.safestring import mark_safe
4from django.conf import settings
5
6class DeleteFileWidget(forms.widgets.FileInput):
7    '''
8    A AdminFileWidget that shows a delete checkbox
9    '''
10    input_type = 'file'
11   
12    def __init__(self, show_delete_checkbox=True, attrs={}):
13        super(DeleteFileWidget, self).__init__(attrs)
14        self.show_delete_checkbox = show_delete_checkbox
15
16    def render(self, name, value, attrs=None):
17        input = super(DeleteFileWidget, self).render(name, value, attrs)
18        if value and hasattr(value, "url"):
19            item = '<tr><td style="vertical-align: middle;">%s</td><td>%s</td>'
20            output = []
21            output.append('<table style="border-style: none;">')
22            output.append(item % (_('Currently:'), '<a target="_blank" href="%s%s">%s</a>' % (settings.MEDIA_URL, value, value)))
23            output.append(item % (_('Change:'), input))
24            if self.show_delete_checkbox:
25                print "hop"
26                output.append(item % (_('Delete') + ':', '<input type="checkbox" name="%s_delete"/>' % name)) # split colon to force "Delete" that is already translated
27            output.append('</table>')
28            return mark_safe(u''.join(output))
29        else:
30            return mark_safe(input)
31
32    def value_from_datadict(self, data, files, name):
33        if not data.get('%s_delete' % name):
34            return super(DeleteFileWidget, self).value_from_datadict(data, files, name)
35        else:
36            return '__deleted__'
37
Note: See TracBrowser for help on using the browser.