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:
parent
e19194147e
commit
60be2b4c14
4 changed files with 63 additions and 44 deletions
|
@ -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 ##
|
||||
#############################
|
||||
|
|
|
@ -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
|
||||
|
||||
|
@ -462,22 +467,6 @@ 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()
|
||||
|
@ -712,6 +701,22 @@ def __prompt_input_menu(method,titre,prompt) :
|
|||
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
|
||||
|
@ -1298,6 +1307,9 @@ def modif_adher(adher) :
|
|||
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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 :
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue