summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Metts <xian@mintchaos.com>2007-10-06 22:21:49 +0000
committerChristian Metts <xian@mintchaos.com>2007-10-06 22:21:49 +0000
commitcc1d4c06c53c703eb77b3a9e9ed2c55ca2017cec (patch)
tree057ce6d692c51bc1df0aa3267a90ebc6f9ff9548
parenta83d1e9ceb103090e6aa2b0b1319d372a9b91270 (diff)
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
-rw-r--r--django/contrib/admin/options.py5
-rw-r--r--django/contrib/admin/widgets.py15
-rw-r--r--django/http/__init__.py2
3 files changed, 22 insertions, 0 deletions
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'<p class="datetime">%s %s<br />%s %s</p>' % \
(_('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: <a target="_blank" href="%s%s">%s</a> <br>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: