From 0133737924cd2fb4cbb8612ec411447fdc882e2b Mon Sep 17 00:00:00 2001 From: bernat Date: Sun, 29 Jan 2006 15:29:01 +0100 Subject: [PATCH] Detabification darcs-hash:20060129142901-d1718-a3ee96a2cff23ce263b8bf73f40d68d95322a95f.gz --- impression/class_impression.py | 238 ++++++++++++++++----------------- 1 file changed, 119 insertions(+), 119 deletions(-) diff --git a/impression/class_impression.py b/impression/class_impression.py index bc775441..fe1fa67e 100755 --- a/impression/class_impression.py +++ b/impression/class_impression.py @@ -30,41 +30,41 @@ class test: class fichier_impression : - nom_job='' - nbr_pages=1 - nb_copie=1 - taille="A4" - recto_verso=False - transparent=False - couleur=True - cout=0.0 - portrait=True - user="" - user_ldap=None #seras une instance de l'utilisateur dans la base ldap. - imprime=-1 #-2 impression en suspend, -1 mise dans la file d'attente, 0 devis, time pour l'heure, -3 déja imprimé ou devis fait depuis trops longtemps : le pdf n'est plus disponible - nom_fichier_pdf="" #chemin et nom du pdf + nom_job='' + nbr_pages=1 + nb_copie=1 + taille="A4" + recto_verso=False + transparent=False + couleur=True + cout=0.0 + portrait=True + user="" + user_ldap=None #seras une instance de l'utilisateur dans la base ldap. + imprime=-1 #-2 impression en suspend, -1 mise dans la file d'attente, 0 devis, time pour l'heure, -3 déja imprimé ou devis fait depuis trops longtemps : le pdf n'est plus disponible + nom_fichier_pdf="" #chemin et nom du pdf nom_fichier_desc="" #chemin et nom du fichier contenant les options de l'utilisateur - list_messages=[] #liste d'erreur et de remarque - list_messages_importants=[] - list_messages_admin=[] #liste d'erreur réservé au administrateur - erreur_critique=False #True si une erreur empêchant l'impression est apparue - code=None #code pour le digicode + list_messages=[] #liste d'erreur et de remarque + list_messages_importants=[] + list_messages_admin=[] #liste d'erreur réservé au administrateur + erreur_critique=False #True si une erreur empêchant l'impression est apparue + code=None #code pour le digicode modif_epoch=0.0 #moment de création du job ou devis. exprimé en epoch (float) : nombre de seconde depuis la référence du temps unix (+-=1970) job_id=None #champs pour de futur amélioration - def actualise_cout(self): - # Calcul du cout de l'impression : - retour = cout(self) - - # Met le prix dans cout s'il n'y a pas d'erreur - if type(retour) is float : - self.cout=retour - self.list_messages_importants.append('cout') - else: - self.erreur_critique=True - self.list_messages_importants.append('erreur_critique') - self.list_messages_admin.append('erreur_cout') - sys.stderr.write(retour) + def actualise_cout(self): + # Calcul du cout de l'impression : + retour = cout(self) + + # Met le prix dans cout s'il n'y a pas d'erreur + if type(retour) is float : + self.cout=retour + self.list_messages_importants.append('cout') + else: + self.erreur_critique=True + self.list_messages_importants.append('erreur_critique') + self.list_messages_admin.append('erreur_cout') + sys.stderr.write(retour) #repond vrai si le solde est assez élevé. def test_cout(self): @@ -80,16 +80,16 @@ class fichier_impression : self.user_ldap.save() return not (self.cout > (self.user_ldap.solde() - impression.decouvert)) - def gen_code(self): - #Génération du code et écriture du code - i=0 - code=0 - import random - #instance de base - rand=random.Random() - #graine automatique avec le temps - rand.seed() - while(i<1000) : + def gen_code(self): + #Génération du code et écriture du code + i=0 + code=0 + import random + #instance de base + 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é @@ -100,7 +100,7 @@ class fichier_impression : break i=i+1 - if code: + if code: #on enregistre le fichier avec le code pour numéro codefichier=open("/var/impression/codes/%d" %code, 'w') #codefichier=open("/localhome/bobot/codes/%d" %code, 'w') @@ -108,7 +108,7 @@ class fichier_impression : codefichier.close() self.code=code self.list_messages_importants.append('code') - else : + else : # Grosse erreur : on logue, on previent et on stoppe. print ("ERROR: Il n'y a pas de code disponible" ) sys.stderr.write ("ERROR: Il n'y a pas de code disponible" ) @@ -120,47 +120,47 @@ class fichier_impression : 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") - #sys.exit(1) + #sys.exit(1) - def impression(self): - # Envoi du fichier à CUPS + def impression(self): + # Envoi du fichier à CUPS #Création de la liste d'options - #pour le nombre de copies - options ='-# '+str(self.nb_copie) + #pour le nombre de copies + options ='-# '+str(self.nb_copie) #options ='-n '+str(self.nb_copie) - - #pour spécifier l'imprimante + + #pour spécifier l'imprimante options +=' -P laserjet' - #pour spécifier la version du language postscript utilisé par pdftops - options +=' -o pdf-level3' - - #pour donner le titre de l'impression + #pour spécifier la version du language postscript utilisé par pdftops + options +=' -o pdf-level3' + + #pour donner le titre de l'impression options +=' -T '+self.nom_job #options +=' -t '+self.nom_job - #pour donner le login de l'adherent + #pour donner le login de l'adherent options +=' -U '+self.user - #pour demander une page de garde + #pour demander une page de garde options +=' -o job-sheets=crans' #page de garde de type standard - if self.transparent : - options+=' -o InputSlot=Tray1 -o Media=Transparency' + if self.transparent : + options+=' -o InputSlot=Tray1 -o Media=Transparency' if self.taille=='A4': options+=(' -o pdf-paper=571x817 -o PageSize=A4') else: options+=(' -o pdf-paper=825x1166 -o InputSlot=Tray3 -o HPPaperPolicy=A3 -o PageSize=A3') - if self.portrait: + if self.portrait: if self.recto_verso: - options+=(' -o sides=two-sided-long-edge') + options+=(' -o sides=two-sided-long-edge') else: options+=(' -o sides=one-sided') else: options+=(' -o landscape') if self.recto_verso: - options+=' -o sides=two-sided-short-edge' + options+=' -o sides=two-sided-short-edge' else: options+=' -o sides=one-sided' options+=' -o HPColorasGray='+str(not self.couleur) @@ -170,35 +170,35 @@ class fichier_impression : #else: #self.job_id=rep.split(' ')[3] - def corrige (self): - # - # fic_impr=fichier_impression() - # fic_impr.user=utilisateur(arguments[2],rw) - #trouve le nombre de pages + def corrige (self): + # + # fic_impr=fichier_impression() + # fic_impr.user=utilisateur(arguments[2],rw) + #trouve le nombre de pages self.nbr_pages = int(os.popen("pdfinfo %s | grep Pages " % (self.nom_fichier_pdf)).readline().split()[1]) - ##Corrige les aberrations - ##Correction des aberations (transparent et recto_verso :) ) - ##Priorité des informations par ordre décroissant - ##Transparent, paper, nbr_page, recto_verso - if (self.taille<>'A4') & (self.taille<>'A3'): - self.list_messages_importants.append("paper") - self.erreur_critique=True - if self.transparent: - if self.paper<>'A4': - self.list_messages.append("A3 transparent") - self.paper='A4' - if self.recto_verso: - self.list_messages.append("Recto_verso transparent") - self.recto_verso=False - if self.nbr_pages==1 & self.recto_verso: - self.list_messages.append("Recto_verso 1 page") - self.recto_verso=False + ##Corrige les aberrations + ##Correction des aberations (transparent et recto_verso :) ) + ##Priorité des informations par ordre décroissant + ##Transparent, paper, nbr_page, recto_verso + if (self.taille<>'A4') & (self.taille<>'A3'): + self.list_messages_importants.append("paper") + self.erreur_critique=True + if self.transparent: + if self.paper<>'A4': + self.list_messages.append("A3 transparent") + self.paper='A4' + if self.recto_verso: + self.list_messages.append("Recto_verso transparent") + self.recto_verso=False + if self.nbr_pages==1 & self.recto_verso: + self.list_messages.append("Recto_verso 1 page") + self.recto_verso=False def affiche_messages_html(self): body="" - + """if self.imprime: - body=string.join(map ((dico_message_laserjet.get),self.list_messages_importants)) + body=string.join(map ((dico_message_laserjet.get),self.list_messages_importants)) if len(self.list_messages)<>0: body=body+'\nRemarques:\n'+string.join(map ((dico_message_laserjet.get),self.list_messages)) else: @@ -211,7 +211,7 @@ class fichier_impression : return "

"+body+"

" def enregistre_pdf(self,f_value,f_nom,dossier): - f_nom = f_nom.translate(string.maketrans(string.punctuation+string.whitespace,'_' * len(string.punctuation+string.whitespace))) + f_nom = f_nom.translate(string.maketrans(string.punctuation+string.whitespace,'_' * len(string.punctuation+string.whitespace))) (fd_fichier_desc,self.nom_fichier_desc) = tempfile.mkstemp(suffix='.desc',prefix=f_nom,dir=dossier) os.close(fd_fichier_desc) os.chmod(self.nom_fichier_desc,33184) @@ -254,16 +254,16 @@ class fichier_impression : ligne=file_obj_desc.readline()[0:-1] file_obj_desc.close() #Vérifie que le fichier existe bien si il doit exister. - if not os.access(self.nom_fichier_pdf,os.F_OK): + if not os.access(self.nom_fichier_pdf,os.F_OK): if self.imprime<>-3: self.imprime=-4 - #else: - # if (time.time()-self.modif_epoch)>duree_vie_pdf: - # os.remove(self.nom_fichier_pdf) - # self.imprime=-4 + #else: + # if (time.time()-self.modif_epoch)>duree_vie_pdf: + # os.remove(self.nom_fichier_pdf) + # self.imprime=-4 - - #fonction utilisé par print et str : renvoie le string canonique de l'objet + + #fonction utilisé par print et str : renvoie le string canonique de l'objet def __repr__(self): dict_contraire={'couleur' : 'Noir et Blanc' , 'transparent' : 'Normal' , 'portrait': 'Paysage' , 'recto_verso' : 'Recto' , 'erreur_critique' : "Pas d'erreur"} dict_normale={'couleur' : 'Couleur' , 'transparent' : 'Transparent' , 'portrait': 'Portrait' , 'recto_verso' : 'Recto-Verso' , 'erreur_critique' : "Problême survenue"} @@ -301,36 +301,36 @@ class fichier_impression : def utilisateur(user, rw): - """ Renvoie l'adherent qui imprime le job - * user est l'utilisateur (argument n°2 des paramètres passés au backend) - * rw vaut True si on veut modifier le compte LDAP de l'adhérent, - False dans le cas contraire - """ + """ Renvoie l'adherent qui imprime le job + * user est l'utilisateur (argument n°2 des paramètres passés au backend) + * rw vaut True si on veut modifier le compte LDAP de l'adhérent, + False dans le cas contraire + """ - # Impression en local avec les certificats (possible pour le groupe adm) - if user=="root": - sys.stderr.write("ERROR: Utilisateur root passé en paramètre.\n") - sys.exit(0) # On conclue l'impression + # Impression en local avec les certificats (possible pour le groupe adm) + if user=="root": + sys.stderr.write("ERROR: Utilisateur root passé en paramètre.\n") + sys.exit(0) # On conclue l'impression - # Récupération de l'adhérent - try: - base = crans_ldap() - if rw: - res=base.search("login=%s"%user,'w')['adherent'] - else: - res=base.search("login=%s"%user)['adherent'] - except: - print ("ERROR: Erreur : Base LDAP non joignable\n") - sys.exit(0) # On arrete l'avant-impression ?on arrete l'imprimante? + # Récupération de l'adhérent + try: + base = crans_ldap() + if rw: + res=base.search("login=%s"%user,'w')['adherent'] + else: + res=base.search("login=%s"%user)['adherent'] + except: + print ("ERROR: Erreur : Base LDAP non joignable\n") + sys.exit(0) # On arrete l'avant-impression ?on arrete l'imprimante? - # Si on ne trouve rien : - if len(res) != 1 : - print ("ERROR: Erreur : adhérent %s non trouvé\n" % user) - sys.exit(0) # On conclue l'avant-impression sans stopper l'imprimante + # Si on ne trouve rien : + if len(res) != 1 : + print ("ERROR: Erreur : adhérent %s non trouvé\n" % user) + sys.exit(0) # On conclue l'avant-impression sans stopper l'imprimante - adherent = res[0] - sys.stderr.write("DEBUG: Adherent %s recupere.\n" % adherent.Nom()) - return adherent + adherent = res[0] + sys.stderr.write("DEBUG: Adherent %s recupere.\n" % adherent.Nom()) + return adherent #fonction cout calcule le pourcentage de couleur sur les pages # renvoit un string avec le nom de l'erreur si erreur il y a