summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/admin/helpers.py13
-rw-r--r--django/contrib/admin/templatetags/admin_list.py1
-rw-r--r--django/contrib/admin/util.py5
-rw-r--r--tests/regressiontests/admin_util/models.py2
-rw-r--r--tests/regressiontests/admin_util/tests.py19
-rw-r--r--tests/regressiontests/admin_views/models.py7
-rw-r--r--tests/regressiontests/admin_views/tests.py1
7 files changed, 29 insertions, 19 deletions
diff --git a/django/contrib/admin/helpers.py b/django/contrib/admin/helpers.py
index c38023b6fd..52d01839cc 100644
--- a/django/contrib/admin/helpers.py
+++ b/django/contrib/admin/helpers.py
@@ -7,6 +7,7 @@ from django.core.exceptions import ObjectDoesNotExist
from django.db.models.fields import FieldDoesNotExist
from django.db.models.fields.related import ManyToManyRel
from django.forms.util import flatatt
+from django.template.defaultfilters import capfirst
from django.utils.encoding import force_unicode, smart_unicode
from django.utils.html import escape, conditional_escape
from django.utils.safestring import mark_safe
@@ -132,8 +133,12 @@ class AdminReadonlyField(object):
# Make self.field look a little bit like a field. This means that
# {{ field.name }} must be a useful class name to identify the field.
# For convenience, store other field-related data here too.
+ if callable(field):
+ class_name = field.__name__ != '<lambda>' and field.__name__ or ''
+ else:
+ class_name = field
self.field = {
- 'name': force_unicode(label != '--' and label or ''),
+ 'name': class_name,
'label': label,
'field': field,
}
@@ -147,8 +152,8 @@ class AdminReadonlyField(object):
attrs = {}
if not self.is_first:
attrs["class"] = "inline"
- label = forms.forms.pretty_name(self.field['label'])
- contents = force_unicode(escape(label)) + u":"
+ label = self.field['label']
+ contents = capfirst(force_unicode(escape(label))) + u":"
return mark_safe('<label%(attrs)s>%(contents)s</label>' % {
"attrs": flatatt(attrs),
"contents": contents,
@@ -213,7 +218,7 @@ class InlineAdminFormSet(object):
continue
if field in self.readonly_fields:
label = label_for_field(field, self.opts.model, self.model_admin)
- yield (False, forms.forms.pretty_name(label))
+ yield (False, label)
else:
field = self.formset.form.base_fields[field]
yield (field.widget.is_hidden, field.label)
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index b1ab7d543c..3f0b9c6360 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -88,7 +88,6 @@ def result_headers(cl):
"class_attrib": mark_safe(' class="action-checkbox-column"')
}
continue
- header = pretty_name(header)
# It is a non-field, but perhaps one that is sortable
admin_order_field = getattr(attr, "admin_order_field", None)
diff --git a/django/contrib/admin/util.py b/django/contrib/admin/util.py
index f727626a03..776a6f0f42 100644
--- a/django/contrib/admin/util.py
+++ b/django/contrib/admin/util.py
@@ -1,5 +1,6 @@
from django.core.exceptions import ObjectDoesNotExist
from django.db import models
+from django.forms.forms import pretty_name
from django.utils import formats
from django.utils.html import escape
from django.utils.safestring import mark_safe
@@ -303,9 +304,9 @@ def label_for_field(name, model, model_admin=None, return_attr=False):
if attr.__name__ == "<lambda>":
label = "--"
else:
- label = attr.__name__
+ label = pretty_name(attr.__name__)
else:
- label = name
+ label = pretty_name(name)
if return_attr:
return (label, attr)
else:
diff --git a/tests/regressiontests/admin_util/models.py b/tests/regressiontests/admin_util/models.py
index e81f7bbc25..493e1271ad 100644
--- a/tests/regressiontests/admin_util/models.py
+++ b/tests/regressiontests/admin_util/models.py
@@ -16,7 +16,7 @@ class Article(models.Model):
def test_from_model_with_override(self):
return "nothing"
- test_from_model_with_override.short_description = "not what you expect"
+ test_from_model_with_override.short_description = "not What you Expect"
class Count(models.Model):
num = models.PositiveSmallIntegerField()
diff --git a/tests/regressiontests/admin_util/tests.py b/tests/regressiontests/admin_util/tests.py
index f874b318f9..5ea0ac585e 100644
--- a/tests/regressiontests/admin_util/tests.py
+++ b/tests/regressiontests/admin_util/tests.py
@@ -157,7 +157,7 @@ class UtilTests(unittest.TestCase):
"another name"
)
self.assertEquals(
- label_for_field("title2", Article, return_attr=True),
+ label_for_field("title2", Article, return_attr=True),
("another name", None)
)
@@ -179,24 +179,24 @@ class UtilTests(unittest.TestCase):
return "nothing"
self.assertEquals(
label_for_field(test_callable, Article),
- "test_callable"
+ "Test callable"
)
self.assertEquals(
label_for_field(test_callable, Article, return_attr=True),
- ("test_callable", test_callable)
+ ("Test callable", test_callable)
)
self.assertEquals(
label_for_field("test_from_model", Article),
- "test_from_model"
+ "Test from model"
)
self.assertEquals(
label_for_field("test_from_model", Article, return_attr=True),
- ("test_from_model", Article.test_from_model)
+ ("Test from model", Article.test_from_model)
)
self.assertEquals(
label_for_field("test_from_model_with_override", Article),
- "not what you expect"
+ "not What you Expect"
)
self.assertEquals(
@@ -207,15 +207,16 @@ class UtilTests(unittest.TestCase):
class MockModelAdmin(object):
def test_from_model(self, obj):
return "nothing"
- test_from_model.short_description = "not really the model"
+ test_from_model.short_description = "not Really the Model"
+
self.assertEquals(
label_for_field("test_from_model", Article, model_admin=MockModelAdmin),
- "not really the model"
+ "not Really the Model"
)
self.assertEquals(
label_for_field("test_from_model", Article,
model_admin = MockModelAdmin,
return_attr = True
),
- ("not really the model", MockModelAdmin.test_from_model)
+ ("not Really the Model", MockModelAdmin.test_from_model)
)
diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py
index be5782886f..a2700ba747 100644
--- a/tests/regressiontests/admin_views/models.py
+++ b/tests/regressiontests/admin_views/models.py
@@ -474,7 +474,7 @@ class Post(models.Model):
class PostAdmin(admin.ModelAdmin):
list_display = ['title', 'public']
- readonly_fields = ('posted', 'awesomeness_level', 'coolness', lambda obj: "foo")
+ readonly_fields = ('posted', 'awesomeness_level', 'coolness', 'value', lambda obj: "foo")
inlines = [
LinkInline
@@ -486,6 +486,9 @@ class PostAdmin(admin.ModelAdmin):
else:
return "Unkown coolness."
+ def value(self, instance):
+ return 1000
+ value.short_description = 'Value in $US'
class Gadget(models.Model):
name = models.CharField(max_length=100)
@@ -567,7 +570,7 @@ class CyclicTwo(models.Model):
return self.name
class Topping(models.Model):
- name = models.CharField(max_length=20)
+ name = models.CharField(max_length=20)
class Pizza(models.Model):
name = models.CharField(max_length=20)
diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py
index 8749fee5ce..23964a949c 100644
--- a/tests/regressiontests/admin_views/tests.py
+++ b/tests/regressiontests/admin_views/tests.py
@@ -1970,6 +1970,7 @@ class ReadonlyTest(TestCase):
self.assertContains(response, '<div class="form-row coolness">')
self.assertContains(response, '<div class="form-row awesomeness_level">')
self.assertContains(response, '<div class="form-row posted">')
+ self.assertContains(response, '<div class="form-row value">')
self.assertContains(response, '<div class="form-row ">')
p = Post.objects.create(title="I worked on readonly_fields", content="Its good stuff")