From f960f4ba334ad8bfb2de8921c7d786c54a857650 Mon Sep 17 00:00:00 2001 From: chove Date: Sun, 29 Jan 2006 17:11:08 +0100 Subject: [PATCH] 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 --- impression/class_impression.py | 39 +++++++++++++++++----------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/impression/class_impression.py b/impression/class_impression.py index 73e506a6..f1b1ec36 100755 --- a/impression/class_impression.py +++ b/impression/class_impression.py @@ -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