Snippets

Valberto Carneiro Django Semantic-ui icons for boolean fields in admin change_list

Created by Valberto Carneiro
# -*- coding: utf-8 -*-
from django.forms.utils import ErrorList
from django.utils.encoding import force_text
from django.utils.html import escape, format_html, format_html_join, html_safe
from django.utils.safestring import mark_safe


class SemanticIcons(object):
    '''
    Show semantic icons from passed value
    '''

    @staticmethod
    def as_boolean_icons(value):
        '''
        display icon for boolean value
        '''
        true_icon = 'check green'
        false_icon = 'remove red'
        html_icon = '<i class="{} icon"></i>'
        if value:
            return format_html(html_icon, mark_safe(true_icon))
        else:
            return format_html(html_icon, mark_safe(false_icon))
from core.utils import SemanticIcons
from django.utils.translation import ugettext_lazy as _
from django.contrib import admin


class QuestionAdmin(admin.ModelAdmin):
    list_display = ('get_action_icons', 'question_text', 'pub_date', 'was_published_recently')
    
    def was_published_recently(self, obj):
        return SemanticIcons.as_boolean_icons(obj.was_published_recently())
    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.short_description = _('Published recently?')
# -*- coding: utf-8 -*-
from django.db import models
import datetime
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _


class Question(models.Model):
    question_text = models.CharField(verbose_name=_(u'Question text'), max_length=200)
    pub_date = models.DateTimeField(verbose_name=_(u'Date published'))
    description = models.TextField(verbose_name=_(u'Description'))
    accepted = models.BooleanField(verbose_name=_('Accepted'))

    class Meta:
        verbose_name = _(u'Question')
        verbose_name_plural = _(u'Questions')

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.