Front-end pour les oprations/visualisation du solde

Droits imrpimeur pour pourvoir crditer/dbiter un compte.

darcs-hash:20050212183442-41617-26b8acd481fe3f71b095ec5c69bf9293ef9fbff6.gz
This commit is contained in:
pauget 2005-02-12 19:34:42 +01:00
parent e19194147e
commit 60be2b4c14
4 changed files with 63 additions and 44 deletions

View file

@ -34,6 +34,10 @@ else : ann_scol = dat[0]
## Répertoire de stoquage des objets détruits ## Répertoire de stoquage des objets détruits
cimetiere = '/home/cimetiere' cimetiere = '/home/cimetiere'
##Impression
# Découvert autorisé
decouvert = -10
############################# #############################
## Paramètres des machines ## ## Paramètres des machines ##
############################# #############################

View file

@ -32,6 +32,11 @@ from ldap_crans import adherent, machine, crans_ldap, crans, club, blacklist_ite
def dialog(arg) : def dialog(arg) :
return affich_tools.dialog(u'Gestion des adhérents et machines du Crans',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 ## Fonctions de remplissage ou modification des paramètres d'un adhérent
@ -461,23 +466,7 @@ def set_droits(adher) :
# Traitement # Traitement
adher.droits(result) 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) : def set_adresse(adher) :
""" Modification de l'édresse d'un adhérent """ """ Modification de l'édresse d'un adhérent """
arg = u'--title "Déménagement de %s" ' % adher.Nom() 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] arg+= u'--msgbox "%s\n\n\n" 0 0' % c.args[0]
dialog(arg) dialog(arg)
return __prompt_input_menu(method,titre,prompt) 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) : def confirm(clas) :
""" Demande confirmation avant enregistrement""" """ Demande confirmation avant enregistrement"""
# On va faire en texte, les couleurs ne passent pas en curses # 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" ' arg+= u'"Compte" "Créer un compte sur zamok" '
if club.compte() : if club.compte() :
arg+= u'"Alias" "Créer ou supprimer un alias mail" ' 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 : if isdeconnecteur :
arg+= u'"Blackliste" "Modifier la blackliste du club" ' 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" ' arg+= u'"Remarque" "Ajouter ou modifer un commentaire" '
annul, res = dialog(arg) annul, res = dialog(arg)
@ -941,8 +947,8 @@ def modif_club(club) :
set_local(club) set_local(club)
elif res[0]=='Alias' : 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.") __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' : elif res[0]=='Solde' :
# set_shell(club) set_solde(club)
if club.modifs : if club.modifs :
return confirm(club) return confirm(club)
@ -1193,6 +1199,9 @@ def modif_adher(adher) :
arg+= u'"Shell" "Changer le shell de cet utilisateur" ' arg+= u'"Shell" "Changer le shell de cet utilisateur" '
if isdeconnecteur : if isdeconnecteur :
arg+= u'"Blackliste" "Modifier la blackliste de cet adhérent" ' 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) annul, res = dialog(arg)
if annul : return 1 if annul : return 1
@ -1297,6 +1306,9 @@ def modif_adher(adher) :
arg = u'--title "Changement du shell de %s" ' % adher.Nom() arg = u'--title "Changement du shell de %s" ' % adher.Nom()
arg+= u'--msgbox "%s\n\n\n" 0 0' % c.args[0] arg+= u'--msgbox "%s\n\n\n" 0 0' % c.args[0]
dialog(arg) dialog(arg)
elif res[0]=='Solde' :
set_solde(adher)
if adher.modifs : if adher.modifs :
return confirm(adher) return confirm(adher)

View file

@ -59,7 +59,7 @@ blacklist_items = { u'bloq' : u'Bloquage total de tout services' ,
################################################################################## ##################################################################################
### Droits possibles ### 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 ### Variables internes diverses
@ -799,7 +799,7 @@ class base_classes_crans(crans_ldap) :
self._data["chbre"][0])) self._data["chbre"][0]))
if "solde" in self.modifs: 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 : if diff > 0 :
modif = modif.replace("solde", "debit %s Euros" % str(diff) ) modif = modif.replace("solde", "debit %s Euros" % str(diff) )
else : else :
@ -1030,36 +1030,29 @@ class base_proprietaire(base_classes_crans) :
else : else :
return [] return []
def solde(self, new=None) : def solde(self, operation=None) :
""" Retourne ou modifie le solde d'un propriétaire """ """ Retourne ou modifie le solde d'un propriétaire
if not self._data.has_key('solde') : operation doit être un nombre positif ou négatif
self._data['solde']=['0'] (string ou int ou float)
solde = string.atof( self._data['solde'][0] ) """
solde = float(self._data.get('solde',[0])[0])
if new==None : if operation==None :
return solde return solde
# vérifie que new est un nombre # On effectue une opération
try : try :
new + 0 new = solde + float(operation.replace(',','.'))
except TypeError : except ValueError :
raise TypeError(u"Il faut donner un nombre en argument.") raise ValueError(u"Il faut donner un nombre en argument.")
# découvert accepté # découvert accepté
if new < 0 : if new < config.decouvert :
raise ValueError(u"Solde minimal atteind, opération non effectuée.") raise ValueError(u"Solde minimal atteind, opération non effectuée.")
self._set('solde',[str(new)]) self._set('solde',[str(new)])
return 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) : def paiement(self,action=None) :
""" """
Action est un entier représentant une année Action est un entier représentant une année

View file

@ -332,6 +332,16 @@ def adher_details(adher) :
f += coul(u'Etudes : ','gras')+ "%s %s %s\n" % \ f += coul(u'Etudes : ','gras')+ "%s %s %s\n" % \
( adher.etudes(0), adher.etudes(1), adher.etudes(2) ) ( 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 # Role dans l'assoce
d = adher.droits() d = adher.droits()
if d : if d :