| 1 | from django import forms |
|---|
| 2 | from django.utils.translation import ugettext as _ |
|---|
| 3 | from django.utils.safestring import mark_safe |
|---|
| 4 | from django.conf import settings |
|---|
| 5 | |
|---|
| 6 | class 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 | |
|---|