diff --git a/admin/menage_cableurs.py b/admin/menage_cableurs.py index cf4b3be2..273260ef 100755 --- a/admin/menage_cableurs.py +++ b/admin/menage_cableurs.py @@ -1,12 +1,11 @@ -#! /usr/bin/env python +#!/bin/bash /usr/scripts/python.sh # -*- coding: utf-8 -*- -import sys -# Copyright (C) Stéphane Glondu, Alexandre Bos +# Copyright (C) Stéphane Glondu, Alexandre Bos, et autres # Licence : GPLv2 -__doc__ = u"""Ce script permet de faire le menages parmis les câbleurs qui ne +__doc__ = u"""Ce script permet de faire le menages parmis les câbleurs qui ne sont plus sur le campus, ie ceux qui ne sont plus à jour de cotisation. Utilisation : @@ -15,22 +14,20 @@ Utilisation : Les commandes sont : * lister afficher la liste des câbleurs succeptibles d'être radiés - * radier selectionner, parmis eux, les cableurs que l'on + * radier selectionner, parmis eux, les cableurs que l'on souhaite radier """ import sys, os, re -sys.path.append('/usr/scripts/gestion') -import config -from email_tools import send_email, parse_mail_template +import gestion.config # Fonctions d'affichage -from affich_tools import coul, tableau, prompt, cprint +from gestion.affich_tools import coul, tableau, prompt, cprint # Importation de la base de données -from ldap_crans import crans_ldap, ann_scol -db = crans_ldap() +from lc_ldap import shortcuts +ldap = shortcuts.lc_ldap_admin() def _controle_interactif_adherents(liste): """ @@ -40,38 +37,40 @@ def _controle_interactif_adherents(liste): restant = len(liste) if restant == 0: return 0, 0 - + cprint(u'\nRadiation des câbleurs fantômes' , 'cyan') cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).") cprint(u"Une autre réponse entraîne l'interruption du processus.") cprint(u"Le format est [nb_restant] Nom, Prénom (aid).") cprint(u"") - + nb = 0 for a in liste: ok = prompt(u'[%3d] %s, %s (%s) ?' - % (restant, a.nom(), a.prenom(), a.id()), 'n', '').lower() + % (restant, a['nom'][0], a['prenom'][0], a['aid'][0]), 'n', '').lower() restant -= 1 if ok == 'o': - modifiable = db.search('aid=%s' % a.id(), 'w')['adherent'][0] - if modifiable._modifiable: - modifiable.droits([]) - cprint(modifiable.save()) - else: - cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge') + modifiable = ldap.search(u'aid=%s' % a['aid'][0], mode='rw')[0] + try: + with modifiable as adh: + adh['droits'].remove(u'Cableur') + adh.history_gen() + adh.save() + cprint(u'Droits cableurs retirés', 'rouge') + except: + cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable['nom'][0], 'rouge') elif ok != 'n': cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge') break def candidats(): - todo_list1 = db.search('droits=*')['adherent'] + todo_list1 = ldap.search(u'droits=cableur') todo_list = [] for adh in todo_list1: - if adh.droitsGeles(): + if not adh.paiement_ok(): todo_list.append(adh) - todo_list.sort(lambda x, y: cmp((x.nom(), x.prenom()), (y.nom(), y.prenom()))) return todo_list - + def lister(): """ Afficher les câbleurs fantômes potentiels. @@ -80,19 +79,19 @@ def lister(): print "Liste des câbleur dont la cotisation n'est pas à jour." print for adh in todo_list: - print adh.prenom() + " " + adh.nom() + print unicode(adh['prenom'][0]) + u" " + unicode(adh['nom'][0]) print print "total : " + str(len(todo_list)) - + def controle_interactif(): """ Procédure interactive de radiations des câbleurs fantômes. """ todo_list = candidats() - + # Zou ! _controle_interactif_adherents(todo_list) - + def __usage(message=None): """ Comment ça marche ? """ @@ -103,22 +102,22 @@ def __usage(message=None): if __name__ == '__main__' : - + if len(sys.argv) <= 1: __usage() - + elif sys.argv[1] == 'lister': if len(sys.argv) != 2: __usage(u'Mauvaise utilisation de lister') lister() - + elif sys.argv[1] == 'radier': if len(sys.argv) != 2: __usage(u'Mauvaise utilisation de radier') controle_interactif() else: __usage(u'Commande inconnue : %s' % sys.argv[1]) - + sys.exit(0)