インストールされたモジュールのバージョンを表示するアプリ - 偏った言語信者の垂れ流しと同じような形で、マウントしたディスクの容量をDjangoの管理画面で表示してみた。
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を使って国際化を行うようにしてる。再利用万歳。