diff --git a/gestion/config.py b/gestion/config.py index c45b6ef6..4655aa2d 100644 --- a/gestion/config.py +++ b/gestion/config.py @@ -34,6 +34,10 @@ else : ann_scol = dat[0] ## Répertoire de stoquage des objets détruits cimetiere = '/home/cimetiere' +##Impression +# Découvert autorisé +decouvert = -10 + ############################# ## Paramètres des machines ## ############################# diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index 09862f4b..df959c96 100755 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -32,6 +32,11 @@ from ldap_crans import adherent, machine, crans_ldap, crans, club, blacklist_ite def dialog(arg) : return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',arg) +try: + isimprimeur = u"Imprimeur" in crans_ldap().search("uid=%s" % script_utilisateur)['adherent'][0].droits() +except: + imprimeur = False + ######################################################################### ## Fonctions de remplissage ou modification des paramètres d'un adhérent @@ -461,23 +466,7 @@ def set_droits(adher) : # Traitement adher.droits(result) - -def set_shell(adher) : - """ Modification du shell d'un adhérent """ - while 1 : - arg = u'--title "Nouveau shell pour %s" ' % adher.Nom() - arg+= u'--inputbox "Shell : " 0 0 "%s" ' % adher.chsh() - annul,res = dialog(arg) - if annul : return 1 - - try : - adher.chsh(res[0]) - break - except ValueError, c : - arg = u'--title "Changement du shell de %s" ' % adher.Nom() - arg+= u'--msgbox "%s\n\n\n" 0 0' % c.args[0] - dialog(arg) - + def set_adresse(adher) : """ Modification de l'édresse d'un adhérent """ arg = u'--title "Déménagement de %s" ' % adher.Nom() @@ -711,7 +700,23 @@ def __prompt_input_menu(method,titre,prompt) : arg+= u'--msgbox "%s\n\n\n" 0 0' % c.args[0] dialog(arg) return __prompt_input_menu(method,titre,prompt) - + +def set_solde(clas) : + """ Débit ou crédit d'un compte """ + while 1 : + arg = u'--title "Crédit / débit du compte de %s" ' % clas.Nom() + arg+= u'--inputbox "Solde actuel : %s\n Opération à effectuer (+ pour crédits et - pour débit) ?" 0 0 "" ' % clas.solde() + annul,res = dialog(arg) + if annul : return 1 + + try: + clas.solde(res[0]) + break + except ValueError, c : + arg = u'--title "Opération impossible" ' + arg+= u'--msgbox "%s\n\n\n" 0 0' % c.args[0] + dialog(arg) + def confirm(clas) : """ Demande confirmation avant enregistrement""" # On va faire en texte, les couleurs ne passent pas en curses @@ -916,10 +921,11 @@ def modif_club(club) : arg+= u'"Compte" "Créer un compte sur zamok" ' if club.compte() : arg+= u'"Alias" "Créer ou supprimer un alias mail" ' - #if isadm and club.compte() : - # arg+= u'"Shell" "Changer le shell du club" ' if isdeconnecteur : arg+= u'"Blackliste" "Modifier la blackliste du club" ' + if isimprimeur : + arg+= u'"Solde" "Effectuer un débit/crédit pour ce club" ' + arg+= u'"Remarque" "Ajouter ou modifer un commentaire" ' annul, res = dialog(arg) @@ -941,8 +947,8 @@ def modif_club(club) : set_local(club) elif res[0]=='Alias' : __prompt_input_menu(club.alias,'Alias mail', "Entrez ou modifier un alias mail.\nPour ajouter un alias modifier le dernier de la liste.") - #elif res[0]=='Shell' : - # set_shell(club) + elif res[0]=='Solde' : + set_solde(club) if club.modifs : return confirm(club) @@ -1193,6 +1199,9 @@ def modif_adher(adher) : arg+= u'"Shell" "Changer le shell de cet utilisateur" ' if isdeconnecteur : arg+= u'"Blackliste" "Modifier la blackliste de cet adhérent" ' + if isimprimeur : + arg+= u'"Solde" "Effectuer un débit/crédit pour cet adhérent" ' + annul, res = dialog(arg) if annul : return 1 @@ -1297,6 +1306,9 @@ def modif_adher(adher) : arg = u'--title "Changement du shell de %s" ' % adher.Nom() arg+= u'--msgbox "%s\n\n\n" 0 0' % c.args[0] dialog(arg) + + elif res[0]=='Solde' : + set_solde(adher) if adher.modifs : return confirm(adher) diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index f162a9fc..d455b538 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -59,7 +59,7 @@ blacklist_items = { u'bloq' : u'Bloquage total de tout services' , ################################################################################## ### Droits possibles -droits_possibles = [ u'Nounou', u'Apprenti', u'Modérateur', u'Câbleur', u'Déconnecteur',u'CVSWeb' , u'WebRadio' ] +droits_possibles = [ u'Nounou', u'Apprenti', u'Modérateur', u'Câbleur', u'Déconnecteur',u'CVSWeb' , u'WebRadio' , u'Imprimeur'] ################################################################################## ### Variables internes diverses @@ -799,7 +799,7 @@ class base_classes_crans(crans_ldap) : self._data["chbre"][0])) if "solde" in self.modifs: - diff = string.atof(self._init_data["solde"][0]) - string.atof(self._data["solde"][0]) + diff = float(self._init_data.get('solde',[0])[0]) - float(self._data.get('solde',[0])[0]) if diff > 0 : modif = modif.replace("solde", "debit %s Euros" % str(diff) ) else : @@ -1030,36 +1030,29 @@ class base_proprietaire(base_classes_crans) : else : return [] - def solde(self, new=None) : - """ Retourne ou modifie le solde d'un propriétaire """ - if not self._data.has_key('solde') : - self._data['solde']=['0'] - solde = string.atof( self._data['solde'][0] ) + def solde(self, operation=None) : + """ Retourne ou modifie le solde d'un propriétaire + operation doit être un nombre positif ou négatif + (string ou int ou float) + """ + solde = float(self._data.get('solde',[0])[0]) - if new==None : + if operation==None : return solde - - # vérifie que new est un nombre + + # On effectue une opération try : - new + 0 - except TypeError : - raise TypeError(u"Il faut donner un nombre en argument.") + new = solde + float(operation.replace(',','.')) + except ValueError : + raise ValueError(u"Il faut donner un nombre en argument.") # découvert accepté - if new < 0 : + if new < config.decouvert : raise ValueError(u"Solde minimal atteind, opération non effectuée.") self._set('solde',[str(new)]) return new - def debit(self, montant) : - """ Effectue un débit sur le solde d'un propriétaire """ - return self.solde( self.solde() - montant ) - - def credit(self, montant) : - """ Effectue un crédit sur le solde d'un propriétaire """ - return self.solde( self.solde() + montant ) - def paiement(self,action=None) : """ Action est un entier représentant une année diff --git a/gestion/whos.py b/gestion/whos.py index 31d6c20a..9e71c5f2 100755 --- a/gestion/whos.py +++ b/gestion/whos.py @@ -332,6 +332,16 @@ def adher_details(adher) : f += coul(u'Etudes : ','gras')+ "%s %s %s\n" % \ ( adher.etudes(0), adher.etudes(1), adher.etudes(2) ) + # Solde + solde = adher.solde() + if solde : + f += coul(u'Solde : ','gras') + if solde < 0 : + f+= coul(str(solde).replace('.',','),'rouge') + else : + f += str(solde).replace('.',',') + f += u" Euros\n" + # Role dans l'assoce d = adher.droits() if d :