mirror of
https://github.com/django/django.git
synced 2025-10-26 23:26:08 +00:00
Fixed #3287: method columns in the admin changelist can now have a {{{boolean}}} attribute that uses the clever little checkmark icons instead of the ugly "True" or "False" strings. Thanks for the patch, xian@mintchaos.com
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4309 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -101,6 +101,10 @@ def result_headers(cl):
|
||||
"url": cl.get_query_string({ORDER_VAR: i, ORDER_TYPE_VAR: new_order_type}),
|
||||
"class_attrib": (th_classes and ' class="%s"' % ' '.join(th_classes) or '')}
|
||||
|
||||
def _boolean_icon(field_val):
|
||||
BOOLEAN_MAPPING = {True: 'yes', False: 'no', None: 'unknown'}
|
||||
return '<img src="%simg/admin/icon-%s.gif" alt="%s" />' % (settings.ADMIN_MEDIA_PREFIX, BOOLEAN_MAPPING[field_val], field_val)
|
||||
|
||||
def items_for_result(cl, result):
|
||||
first = True
|
||||
pk = cl.lookup_opts.pk.attname
|
||||
@@ -114,9 +118,14 @@ def items_for_result(cl, result):
|
||||
try:
|
||||
attr = getattr(result, field_name)
|
||||
allow_tags = getattr(attr, 'allow_tags', False)
|
||||
boolean = getattr(attr, 'boolean', False)
|
||||
if callable(attr):
|
||||
attr = attr()
|
||||
result_repr = str(attr)
|
||||
if boolean:
|
||||
allow_tags = True
|
||||
result_repr = _boolean_icon(attr)
|
||||
else:
|
||||
result_repr = str(attr)
|
||||
except (AttributeError, ObjectDoesNotExist):
|
||||
result_repr = EMPTY_CHANGELIST_VALUE
|
||||
else:
|
||||
@@ -147,8 +156,7 @@ def items_for_result(cl, result):
|
||||
row_class = ' class="nowrap"'
|
||||
# Booleans are special: We use images.
|
||||
elif isinstance(f, models.BooleanField) or isinstance(f, models.NullBooleanField):
|
||||
BOOLEAN_MAPPING = {True: 'yes', False: 'no', None: 'unknown'}
|
||||
result_repr = '<img src="%simg/admin/icon-%s.gif" alt="%s" />' % (settings.ADMIN_MEDIA_PREFIX, BOOLEAN_MAPPING[field_val], field_val)
|
||||
result_repr = _boolean_icon(field_val)
|
||||
# FloatFields are special: Zero-pad the decimals.
|
||||
elif isinstance(f, models.FloatField):
|
||||
if field_val is not None:
|
||||
|
||||
Reference in New Issue
Block a user