#!/usr/bin/env python # -*- coding: utf-8 -*- '''Script de retrait des vielles Mailing-List v0.2b (02/2012) par Lucas Serrano Merci à Vincent Le Gallic pour son aide. ''' import time import sys import os #import argparse sys.path.insert(0, '/var/lib/mailman') from Mailman import MailList from Mailman import Utils #Parsing des arguments DISK_USAGE = True if "--no-du" in sys.argv: DISK_USAGE = False try: date=sys.argv[1] date=time.mktime(time.strptime(date, "%d/%m/%Y")) except: sys.exit("\nErreur: Veuillez poster une date de peremption sous le format JJ/MM/AAAA\n") listeDeListes = Utils.list_names() #Recupère les noms des listes sous forme de string listes = list() for n in listeDeListes: temp = MailList.MailList(n, lock=False) #Créer les objets liste à l'aide de leurs noms listes.append([n, temp.last_post_time, temp.archive_dir(), temp.members.keys()]) listes.sort(key=lambda list:list[1]) #Classement par date du dernier post #Partie affichage tailleTotale = 0 if DISK_USAGE: print "\n \n%-40s | %-12s | %s | %s\n" %("Nom de la liste", "Dernier post", "Taille", "Membres") else: print "\n \n%-40s | %-12s | %s\n" %("Nom de la liste", "Dernier post", "Membres") for l in listes: if l[1] > date: break dateFormatee = time.strftime("%d/%m/%Y", time.gmtime(l[1])) if DISK_USAGE: taille = 0 chemin = l[2] #Recherche de la taille du dossier d'archive for (path, dirs, files) in os.walk(chemin): for file in files: filename = os.path.join(path, file) taille += os.path.getsize(filename) taille = taille / 1048576.0 tailleTotale += taille print "%-40s | %-11s | %-6.1f MB | %s" %(l[0], dateFormatee, taille, len(l[3])) else: print "%-40s | %-11s | %s" %(l[0], dateFormatee, len(l[3])) if DISK_USAGE: print "Taille Totale: %0.1f MB" % (tailleTotale)