diff --git a/admin/controle_tresorier3.py b/admin/controle_tresorier3.py new file mode 100755 index 00000000..dc9903fa --- /dev/null +++ b/admin/controle_tresorier3.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright (C) 2011 Michel Blockelet +# Licence : GPLv3 + +u"""Ce script permet aux trésoriers d'effectuer les contrôles en spécifiant +chaque adhérent par une expression de recherche et les contrôles à effectuer +sur cette personne. + +Exemple : + controle_tresorier3.py nom=blockelet+pc 2190c +""" + +import sys +sys.path.append('/usr/scripts/gestion') +from config import ann_scol +from ldap_crans import crans_ldap +from affich_tools import coul + +db = crans_ldap() + +if __name__ == "__main__": + if len(sys.argv) > 1: + # Aide + if sys.argv[1] == '-h': + print __doc__ + sys.exit(1) + + print coul('=== Mode non-interactif ===', 'vert') + for act in sys.argv[1:]: + # Deux formats + if '+' in act: + # [recherche]+[contrôle] : nom=blockelet+pc + [sexpr, contr] = act.split('+') + else: + # [aid][contrôle] : 1240pc + contr = ('p' if 'p' in act else '') + ('c' if 'c' in act else '') + sexpr = "aid=%s" % act.replace('p', '').replace('c', '') + + # Recherche + try: + adhl = db.search(sexpr, 'w')['adherent'] + except: + print coul(" *** Erreur de recherche : (%s)(+%s)" % + (sexpr, contr), 'rouge') + continue + + if len(adhl) == 0: + print coul(" *** Aucun adhérent trouvé : (%s)(+%s)" % + (sexpr, contr), 'rouge') + continue + if len(adhl) > 1: + print coul(" *** Plusieurs adhérents trouvés : (%s)(+%s)" % + (sexpr, contr), 'rouge') + continue + adh = adhl[0] + if ann_scol not in adh.paiement(): + print coul(" *** N'a pas adhéré cette année : (%s)(+%s)" % + (sexpr, contr), 'rouge') + continue + + modif = False + + # On regarde les contrôles à faire + newcontr = contr + if 'p' in adh.controle(): + newcontr = newcontr.replace('p', '') + if 'c' in adh.controle(): + newcontr = newcontr.replace('c', '') + + print coul(" * %s (aid=%s) : %s +%s -> %s" % (adh.Nom(), adh.id(), + adh.controle(), contr, (newcontr if newcontr else '[rien]')), + 'bleu') + + # Si la carte n'est pas notée, on le fait + if ann_scol not in adh.carteEtudiant() and 'c' in contr: + print coul("Ajout de la carte", 'violet') + adh.carteEtudiant(ann_scol) + modif = True + + # On fait les contrôles + if modif or newcontr != '': + if newcontr == 'pc' or newcontr == 'cp': + adh.controle('+p') + adh.controle('+c') + else: + adh.controle('+%s' % newcontr) + adh.save() + else: + print coul("Aucune modification", 'jaune') diff --git a/respbats/controle_tresorier3 b/respbats/controle_tresorier3 new file mode 100755 index 00000000..b319238b --- /dev/null +++ b/respbats/controle_tresorier3 @@ -0,0 +1,2 @@ +#! /bin/sh +sudo -u respbats /usr/scripts/admin/controle_tresorier3.py $*