Commit 909ee625 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

[1.2.X] Fixed #14355 -- Ensure that help_text is displayed for readonly fields...

[1.2.X] Fixed #14355 -- Ensure that help_text is displayed for readonly fields in the admin. Thanks to jester for the report, and to alexbmeng, subsume, wamberg and Julien Phalip for ther work on the patch.

Backport of r15582 from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15583 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent da4dea58
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
from django import forms
from django.conf import settings
from django.contrib.admin.util import flatten_fieldsets, lookup_field
from django.contrib.admin.util import display_for_field, label_for_field
from django.contrib.admin.util import display_for_field, label_for_field, help_text_for_field
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist
from django.db.models.fields import FieldDoesNotExist
@@ -145,6 +145,7 @@ class AdminReadonlyField(object):
            'name': class_name,
            'label': label,
            'field': field,
            'help_text': help_text_for_field(class_name, form._meta.model)
        }
        self.form = form
        self.model_admin = model_admin
+2 −2
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@
                            {{ field.field }}
                        {% endif %}
                    {% endif %}
                    {% if field.field.field.help_text %}
                        <p class="help">{{ field.field.field.help_text|safe }}</p>
                    {% if field.field.help_text %}
                        <p class="help">{{ field.field.help_text|safe }}</p>
                    {% endif %}
                </div>
            {% endfor %}
+7 −0
Original line number Diff line number Diff line
@@ -317,6 +317,13 @@ def label_for_field(name, model, model_admin=None, return_attr=False):
    else:
        return label

def help_text_for_field(name, model):
    try:
        help_text = model._meta.get_field_by_name(name)[0].help_text
    except models.FieldDoesNotExist:
        help_text = ""
    return smart_unicode(help_text)


def display_for_field(value, field):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon
+6 −3
Original line number Diff line number Diff line
@@ -496,9 +496,12 @@ class LinkInline(admin.TabularInline):


class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    posted = models.DateField(default=datetime.date.today)
    title = models.CharField(max_length=100, help_text="Some help text for the title (with unicode ŠĐĆŽćžšđ)")
    content = models.TextField(help_text="Some help text for the content (with unicode ŠĐĆŽćžšđ)")
    posted = models.DateField(
            default=datetime.date.today,
            help_text="Some help text for the date (with unicode ŠĐĆŽćžšđ)"
    )
    public = models.NullBooleanField()

    def awesomeness_level(self):
+4 −0
Original line number Diff line number Diff line
@@ -2263,6 +2263,10 @@ class ReadonlyTest(TestCase):
        self.assertContains(response, '<div class="form-row posted">')
        self.assertContains(response, '<div class="form-row value">')
        self.assertContains(response, '<div class="form-row ">')
        self.assertContains(response, '<p class="help">', 3)
        self.assertContains(response, '<p class="help">Some help text for the title (with unicode ŠĐĆŽćžšđ)</p>')
        self.assertContains(response, '<p class="help">Some help text for the content (with unicode ŠĐĆŽćžšđ)</p>')
        self.assertContains(response, '<p class="help">Some help text for the date (with unicode ŠĐĆŽćžšđ)</p>')

        p = Post.objects.create(title="I worked on readonly_fields", content="Its good stuff")
        response = self.client.get('/test_admin/admin/admin_views/post/%d/' % p.pk)