From cc1d4c06c53c703eb77b3a9e9ed2c55ca2017cec Mon Sep 17 00:00:00 2001 From: Christian Metts Date: Sat, 6 Oct 2007 22:21:49 +0000 Subject: [PATCH] newforms-admin: Added link to current file for file-based widgets in the admin git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@6457 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/admin/options.py | 5 +++++ django/contrib/admin/widgets.py | 15 +++++++++++++++ django/http/__init__.py | 2 ++ 3 files changed, 22 insertions(+) diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index 901847220f..73d592b684 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -164,6 +164,11 @@ class BaseModelAdmin(object): kwargs['widget'] = widgets.AdminTimeWidget return db_field.formfield(**kwargs) + # For FileFields and ImageFields add a link to the current file. + if isinstance(db_field, models.ImageField) or isinstance(db_field, models.FileField): + kwargs['widget'] = widgets.AdminFileWidget + return db_field.formfield(**kwargs) + # For ForeignKey or ManyToManyFields, use a special widget. if isinstance(db_field, (models.ForeignKey, models.ManyToManyField)): if isinstance(db_field, models.ForeignKey) and db_field.name in self.raw_id_fields: diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py index 057e0e61b4..ccd3652f12 100644 --- a/django/contrib/admin/widgets.py +++ b/django/contrib/admin/widgets.py @@ -60,6 +60,21 @@ class AdminSplitDateTime(forms.SplitDateTimeWidget): return u'

%s %s
%s %s

' % \ (_('Date:'), rendered_widgets[0], _('Time:'), rendered_widgets[1]) +class AdminFileWidget(forms.FileInput): + """ + A FileField Widget that shows it's current value if it has one + """ + def __init__(self, attrs={}): + super(AdminFileWidget, self).__init__(attrs) + + def render(self, name, value, attrs=None): + from django.conf import settings + output = [] + if value: + output.append('Currently: %s
Change: ' % (settings.MEDIA_URL, value, value)) + output.append(super(AdminFileWidget, self).render(name, value, attrs)) + return u''.join(output) + class ForeignKeyRawIdWidget(forms.TextInput): """ A Widget for displaying ForeignKeys in the "raw_id" interface rather than diff --git a/django/http/__init__.py b/django/http/__init__.py index 9a47e70592..baf9a11955 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -48,6 +48,8 @@ class HttpRequest(object): "Returns the HTTP host using the environment or request headers." # We try three options, in order of decreasing preference. host = self.META.get('HTTP_X_FORWARDED_HOST', '') + if host: + return host if 'HTTP_HOST' in self.META: host = self.META['HTTP_HOST'] else: