ディスク容量を管理画面から見るアプリ

インストールされたモジュールのバージョンを表示するアプリ - 偏った言語信者の垂れ流しと同じような形で、マウントしたディスクの容量をDjangoの管理画面で表示してみた。
http://tokibito.orz.hm/static/img/django-diskinfo.png
utils.py

import os
import re
def diskinfo(dir):
    pipe = os.popen('df | grep \" %s$\"' % dir, 'r')
    text = pipe.read()
    pipe.close()
    info = re.split('[\s]+',text)
    if text != '':
        return {'filesystem':info[0], 'size':info[1], 'used':info[2], 'avail':info[3], 'useper':info[4]}
    else:
        return None

models.py

from utils import diskinfo
from django.db import models
from django.utils.translation import ugettext_lazy as _

class Disk(models.Model):
    """
    disk info model
    """
    directory = models.CharField(_('Directory'), max_length=255)

    class Admin:
        list_display = ('directory', 'get_size', 'get_used', 'get_avail', 'get_useper', 'get_filesystem')
        search_fields = ('directory',)

    class Meta:
        verbose_name = _('Disk')
        verbose_name_plural = _('Disk')
        ordering = ('directory',)

    def __unicode__(self):
        return self.directory

    def get_filesystem(self):
        try:
            return diskinfo(self.directory)['filesystem']
        except:
            return _('Not available')

    get_filesystem.short_description = _('Filesystem')

    def get_size(self):
        try:
            return _('%s KBytes') % diskinfo(self.directory)['size']
        except:
            return _('Not available')

    get_size.short_description = _('Size')

    def get_used(self):
        try:
            return _('%s KBytes') % diskinfo(self.directory)['used']
        except:
            return _('Not available')

    get_used.short_description = _('Used')

    def get_avail(self):
        try:
            return _('%s KBytes') % diskinfo(self.directory)['avail']
        except:
            return _('Not available')

    get_avail.short_description = _('Avail')

    def get_useper(self):
        try:
            return _('%s') % diskinfo(self.directory)['useper']
        except:
            return _('Not available')

    get_useper.short_description = _('Useper')

    def get_diskinfo(self):
        return diskinfo(self.directory)

そういえば最近、自作のアプリで汎用性の高そうなものはugettext_lazyを使って国際化を行うようにしてる。再利用万歳。