diff options
| author | Jannis Leidel <jannis@leidel.info> | 2010-02-01 14:12:56 +0000 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2010-02-01 14:12:56 +0000 |
| commit | 267346678d6fe2bbccf7394bae3c380af1a3a25c (patch) | |
| tree | a728321536ad1de97165f30b42621dcccd854001 /tests/regressiontests/admin_util | |
| parent | 6c36e1034a5ff729ec4cc8a10423f24b331996e5 (diff) | |
Fixed #12654 - Correctly display ForeignKey fields in read-only scenarios. Thanks, minmax.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12366 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/admin_util')
| -rw-r--r-- | tests/regressiontests/admin_util/models.py | 1 | ||||
| -rw-r--r-- | tests/regressiontests/admin_util/tests.py | 47 |
2 files changed, 47 insertions, 1 deletions
diff --git a/tests/regressiontests/admin_util/models.py b/tests/regressiontests/admin_util/models.py index c4022b3814..0c2af585cd 100644 --- a/tests/regressiontests/admin_util/models.py +++ b/tests/regressiontests/admin_util/models.py @@ -6,6 +6,7 @@ class Article(models.Model): """ A simple Article model for testing """ + site = models.ForeignKey('sites.Site', related_name="admin_articles") title = models.CharField(max_length=100) title2 = models.CharField(max_length=100, verbose_name="another name") created = models.DateTimeField() diff --git a/tests/regressiontests/admin_util/tests.py b/tests/regressiontests/admin_util/tests.py index e7f163aa94..479cfdcb52 100644 --- a/tests/regressiontests/admin_util/tests.py +++ b/tests/regressiontests/admin_util/tests.py @@ -1,16 +1,61 @@ +from datetime import datetime import unittest from django.db import models from django.contrib import admin -from django.contrib.admin.util import display_for_field, label_for_field +from django.contrib.admin.util import display_for_field, label_for_field, lookup_field from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE +from django.contrib.sites.models import Site +from django.utils.formats import localize from models import Article class UtilTests(unittest.TestCase): + def test_values_from_lookup_field(self): + """ + Regression test for #12654: lookup_field + """ + SITE_NAME = 'example.com' + TITLE_TEXT = 'Some title' + CREATED_DATE = datetime.min + ADMIN_METHOD = 'admin method' + SIMPLE_FUNCTION = 'function' + INSTANCE_ATTRIBUTE = 'attr' + + class MockModelAdmin(object): + def get_admin_value(self, obj): + return ADMIN_METHOD + + simple_function = lambda obj: SIMPLE_FUNCTION + + article = Article( + site=Site(domain=SITE_NAME), + title=TITLE_TEXT, + created=CREATED_DATE, + ) + article.non_field = INSTANCE_ATTRIBUTE + + verifications = ( + ('site', SITE_NAME), + ('created', localize(CREATED_DATE)), + ('title', TITLE_TEXT), + ('get_admin_value', ADMIN_METHOD), + (simple_function, SIMPLE_FUNCTION), + ('test_from_model', article.test_from_model()), + ('non_field', INSTANCE_ATTRIBUTE) + ) + + mock_admin = MockModelAdmin() + for name, value in verifications: + field, attr, resolved_value = lookup_field(name, article, mock_admin) + + if field is not None: + resolved_value = display_for_field(resolved_value, field) + + self.assertEqual(value, resolved_value) def test_null_display_for_field(self): """ |
