quota.py 1.66 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
# -*- coding: utf8 -*-
# Reloockage de quota.py, passage à l'intranet 2
# On retire le sudo par défaut, l'user execute lui meme quota
# Ecrit il y a longtemps, "dépoussiéré" et "enrichi" par
# Gabriel Détraz detraz@crans.org

import subprocess

def getFloat(chose):
    chose = chose.replace(',', '.')
    return float(chose)

def getUserQuota(user):
Daniel STAN's avatar
Daniel STAN committed
14
    proc = subprocess.Popen(['sudo', '-n', 'quota', user], stdout=subprocess.PIPE)
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
    stdoutdata = proc.communicate()[0]
    string_result = stdoutdata.split("\n")
    quotas = []
    for a_line in string_result[2:-1]:
        usage, quota, limite, percentage, fs = a_line.split("\t")
        if "mail" in fs:
            label = u"Quota dans votre boite de réception"
        elif fs == "/home-adh/%s" % (user[0],):
            label = u"Quota dans votre home personnel"
        else:
            label = u"Quota dans %s" % (fs,)
        line_dict = {
            "label" : label,
            "usage" : getFloat(usage),
            "quota" : getFloat(quota),
            "limite" : getFloat(limite),
            "%" : getFloat(percentage),
            "filesystem" : fs, # pourquoi pas ?
        }
        quotas.append(line_dict)
    return quotas

def fake_getUserQuota( userLogin ):
    return [
        {
            '%': 33.9,
            'quota': 390.62,
            'label': u'Dossier personnel (fake)',
            'limite': 585.94,
            'filesystem': '/home',
            'usage': 420.32
        },
        {
            '%': 0.1,
            'quota': 100.00,
            'label': u'Boite de r\xe9ception (fake)',
            'limite': 150.00,
            'filesystem': '/var/mail',
            'usage': 0.06
        }
    ]