On utilise toutes les possibilits de Python :

- on utilise for quand c'est un for, et while quand c'est du while
  - on utilise le else de for/while = execut  la fin de la boucle si il
    n'y a pas eu de break avant)
On vite trop de bug :
  - le break doit tre lanc si le code est libre (d'ou le not ajout),
    avant deux erreurs se compensaient (Vince a traduit les bugs, ils ne
    viennent pas de lui)
A l'avenir :
  - sortir la fonction gen_code de la classe, c'est une fonction  part
    entire, elle n'a rien a faire dans une classe. On pourrait en avoir
    besoin  d'autres endroits.
  - grer les erreurs avec les exceptions : s'il n'y a pas de code dispo, on
    lve une exception, ca sert  rien de continuer
  - utiliser les outils adquats pour logguer les erreurs, et si on veut
    crire plein de trucs sur stderr, on peut faire :
      erreur = sys.stderr.write
      erreur('bidule')
      erreur('machine')
      ...
    Comme ca le jour o on veut logguer les erreurs  un autre endroit, on
    fait erreur = open('fichier','w+').write (ou un truc du genre)
C'tat des ides comme ca, ca permettrait d'laguer encore pas mal le code,
Francois en a fait un bon bout mais il faudrait continuer. Je pense que
c'est le manque d'habitude de Python, mais avec le temps le code sera bien
lisible.

darcs-hash:20060129161108-4ec08-57f4e8e916e990d6fcfe9e70233a672a2b0797ab.gz
This commit is contained in:
chove 2006-01-29 17:11:08 +01:00
parent 6b4be0e285
commit f960f4ba33

View file

@ -86,38 +86,37 @@ class fichier_impression :
def gen_code(self):
# Génération du code et écriture du code
i=0
code=0
rand=random.Random()
# Graine automatique avec le temps
rand.seed()
while(i<1000) :
# On génère le numéro de session
code = rand.randint(100000,999999) #pour avoir six chiffres
# On verifie que le code n'est déja pas utilisé
if os.path.exists("/var/impression/codes/%d" % code):
for i in range(1000):
# On génère un code
code = rand.randint(100000,999999)
# Si le code est libre, on sort de la boucle
if not os.path.exists("/var/impression/codes/%d" % code):
break
i = i+1
if code:
# On enregistre le fichier avec le code pour numéro
codefichier = open("/var/impression/codes/%d" % code, 'w')
codefichier.write("Utilisateur %s\n"%(self.user_ldap.Nom()))
codefichier.close()
self.code=code
self.list_messages_importants.append('code')
else :
# Grosse erreur : on logue, on previent et on stoppe.
else:
# Pas de code disponible
print ("ERROR: Il n'y a pas de code disponible" )
sys.stderr.write ("ERROR: Il n'y a pas de code disponible" )
try:
self.list_messages_importants.append('erreur gen_code')
sys.stderr.write("DEBUG: Un rapport de bug a ete automatiquement envoye.\n")
except :
except:
sys.stderr.write("ERROR: Impossible d'envoyer le rapport de bug.\n")
sys.stderr.write("ERROR: Plus de codes disponibles.\n")
sys.stderr.write("ERROR: Penser a ouvrir a l'adherent debite...\n")
return
# On enregistre le fichier avec le code pour numéro
codefichier = open("/var/impression/codes/%d" % code, 'w')
codefichier.write("Utilisateur %s\n" % self.user_ldap.Nom())
codefichier.close()
self.code=code
self.list_messages_importants.append('code')
def impression(self):
# Envoi du fichier à CUPS