diff --git a/djadmin2/renderers.py b/djadmin2/renderers.py new file mode 100644 index 0000000..0454eaa --- /dev/null +++ b/djadmin2/renderers.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +""" +This module contains default renderers for admin fields. They are used for +example in the list view. +""" +from __future__ import division, absolute_import, unicode_literals + +import os.path +from datetime import date, time, datetime + +from django.utils import formats, timezone +from django.template.loader import render_to_string + +from djadmin2 import settings + + +def boolean_renderer(value, field): + """ + Render a boolean value as icon. + + This uses the template ``renderers/boolean.html``. + + :param value: The value to process. + :type value: boolean + :param field: The model field instance + :type field: django.db.models.fields.Field + :rtype: unicode + + """ + # TODO caching of template + tpl = os.path.join(settings.ADMIN2_THEME_DIRECTORY, 'renderers/boolean.html') + return render_to_string(tpl, {'value': value}) + + +def datetime_renderer(value, field): + """ + Localize and format the specified date. + + :param value: The value to process. + :type value: datetime.date or datetime.time or datetime.datetime + :param field: The model field instance + :type field: django.db.models.fields.Field + :rtype: unicode + + """ + if isinstance(value, datetime): + return formats.localize(timezone.template_localtime(value)) + elif isinstance(value, (date, time)): + return formats.localize(value) + else: + return value + + +def title_renderer(value, field): + """ + Render a string in title case (capitalize every word). + + :param value: The value to process. + :type value: str or unicode + :param field: The model field instance + :type field: django.db.models.fields.Field + :rtype: unicode + + """ + return unicode(value).title() diff --git a/djadmin2/settings.py b/djadmin2/settings.py index 4df39e5..d0ae587 100644 --- a/djadmin2/settings.py +++ b/djadmin2/settings.py @@ -6,6 +6,7 @@ from django.conf import settings MODEL_ADMIN_ATTRS = ( 'list_display', 'list_display_links', 'list_filter', 'admin', 'search_fields', + 'field_renderers', 'index_view', 'detail_view', 'create_view', 'update_view', 'delete_view', 'get_default_view_kwargs', 'get_list_actions', 'actions_on_bottom', 'actions_on_top', diff --git a/djadmin2/templates/djadmin2/bootstrap/model_list.html b/djadmin2/templates/djadmin2/bootstrap/model_list.html index ed52611..32bfc42 100644 --- a/djadmin2/templates/djadmin2/bootstrap/model_list.html +++ b/djadmin2/templates/djadmin2/bootstrap/model_list.html @@ -84,12 +84,12 @@ {% for attr in view.model_admin.list_display %}