Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #13301 -- Corrected problem with capitalization of changelist r…

…ow headers in admin. Thanks to emyller for the report.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12947 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit faceca7075d72d55f0eebc586049fb634cd46129 1 parent f4c76fb
Russell Keith-Magee freakboy3742 authored
13 django/contrib/admin/helpers.py
View
@@ -7,6 +7,7 @@
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 @@ def __init__(self, form, field, is_first, model_admin=None):
# 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 @@ def label_tag(self):
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 @@ def fields(self):
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)
1  django/contrib/admin/templatetags/admin_list.py
View
@@ -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)
5 django/contrib/admin/util.py
View
@@ -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:
2  tests/regressiontests/admin_util/models.py
View
@@ -16,7 +16,7 @@ def test_from_model(self):
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()
19 tests/regressiontests/admin_util/tests.py
View
@@ -157,7 +157,7 @@ def test_label_for_field(self):
"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 @@ def test_callable(obj):
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 @@ def test_callable(obj):
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)
)
7 tests/regressiontests/admin_views/models.py
View
@@ -474,7 +474,7 @@ def awesomeness_level(self):
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 @@ def coolness(self, instance):
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 @@ def __unicode__(self):
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)
1  tests/regressiontests/admin_views/tests.py
View
@@ -1970,6 +1970,7 @@ def test_readonly_get(self):
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")
Please sign in to comment.
Something went wrong with that request. Please try again.