diff --git a/impression/class_impression.py b/impression/class_impression.py index ea30822c..bbe37360 100755 --- a/impression/class_impression.py +++ b/impression/class_impression.py @@ -43,6 +43,7 @@ class test: ################################################################################ class fichier_impression: + """ Interface pour la gestion d'un travaille d'impression """ nom_job = '' nbr_pages = 1 nb_copies = 1 @@ -52,7 +53,7 @@ class fichier_impression: couleur = True cout = 0.0 portrait = True - agrafe=0 #-1 : agrafe diagonale, 0 : pas d'agrafe, 1 : 1 agrafe parallele, 2: 2 agrafes, 3: 3 agrafes, 6: 6 agrafes(stitching) + agrafe=0 #-1 : agrafe diagonale, 0 : pas d'agrafe, 1 : 1 agrafe parallele, 2: 2 agrafes, 3: 3 agrafes, 6: 6 agrafes(stitching) user = "" user_ldap = None # sera une instance de l'utilisateur dans la base ldap. imprime = -1 #-2 impression en suspend, -1 mise dans la file @@ -72,8 +73,11 @@ class fichier_impression: # en epoch (float) : nombre de seconde depuis # la référence du temps unix (+-=1970) job_id = None # champs pour de futures améliorations - - def actualise_cout(self): + + + def actualise_cout(self): + """ Actualise le champ cout + Leve l'erreur ErreurImpression si le calcul du cout ne c'est pas bien passe """ # Calcul du cout de l'impression : retour = cout(self) @@ -87,20 +91,25 @@ class fichier_impression: self.list_messages_admin.append('erreur_cout') raise ErreurImpression(retour) - # Repond vrai si le solde est assez élevé. + def test_cout(self): + """ Repond vrai si le solde est assez élevé. """ if self.user_ldap == None: self.user_ldap = utilisateur(self.user, False) # /!\ decouvert est négatif. return not (self.cout > (self.user_ldap.solde() - impression.decouvert)) + def fait_payer(self): + """ Retire au solde de l'adherent la valeur de cout """ self.user_ldap = utilisateur(self.user, True) self.user_ldap.solde(-self.cout, self.nom_job) self.user_ldap.save() return not (self.cout > (self.user_ldap.solde() - impression.decouvert)) - + + def gen_code(self): + """ Genere le code et l'enregistre dans /var/impression/codes pour radius """ # Génération du code et écriture du code rand=random.Random() # Graine automatique avec le temps @@ -133,7 +142,9 @@ class fichier_impression: self.code = code self.list_messages_importants.append('code') + def impression(self): + """ Envoie l'impression a l'imprimante avec les parametres actuels """ # Envoi du fichier à CUPS options ='' # Création de la liste d'options @@ -202,8 +213,10 @@ class fichier_impression: print "
status:%d rep: %s
" % (status, rep) openlog("impression") syslog("lpr status:%d | rep: %s" % (status, rep)) - + + def corrige(self): + """ Corrige les absurditees (ex transparents recto-verso) [obsolete] """ # 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 @@ -224,7 +237,9 @@ class fichier_impression: self.list_messages.append("Recto_verso 1 page") self.recto_verso = False + def affiche_messages_html(self): + """ Creait le code html correspondant a un tableau contenant le code adequate [obsolete] """ body = "" """ @@ -241,7 +256,13 @@ class fichier_impression: body = string.join(self.list_messages_importants) return "%s
" % body + def enregistre_pdf(self, f_value, f_nom, dossier): + """ Enregistre un pdf dans le dossier dossier + Met a jour la variable nom_fichier_pdf + dossier = dossier de destination + f_value = le coprs du pdf + f_nom = obsolete (etait le prefixe du nom du fichier)""" openlog("impression") try: (fd_fichier_desc, self.nom_fichier_desc) = tempfile.mkstemp(suffix='.desc', prefix='job', dir=dossier) @@ -260,7 +281,9 @@ class fichier_impression: self.nbr_pages = int(os.popen("pdfinfo '%s' | grep Pages " % (self.nom_fichier_pdf)).readline().split()[1]) self.modif_epoch = time.time() + def sauve_desc(self): + """ Sauve les parametre du travaille d'impression dans le fichier nom_fichier_desc """ try: file_obj_desc = open(self.nom_fichier_desc,'w') for key in ("erreur_critique", "nom_job", "nbr_pages", @@ -273,8 +296,10 @@ class fichier_impression: file_obj_desc.close() except Exception, inst : raise ErreurImpression("class : erreur dans enregistrement du .desc %s : %s" % (self.nom_fichier_desc,str(inst))) - + + def read_desc(self): + """ Lit le fichier nom_fichier_desc et met a jour les variables """ try: file_obj_desc = open(self.nom_fichier_desc, 'r') ligne = file_obj_desc.readline()[0:-1] @@ -308,14 +333,15 @@ class fichier_impression: self.imprime = -4 openlog("impression") syslog("class : %s a disparu" % self.nom_fichier_pdf) - + def get_attr(self,key): + """ Fonction obsolete utilise avec cheetah """ return getattr(self,key) - + + def __repr__(self): - """ renvoie le string canonique de l'objet - fonction utilisé par print et str """ - + """ Cree le code html correspondant a un tableau contenant les informations pertinentes """ + dict_contraire = { 'couleur' : 'Noir et Blanc', 'transparent' : 'Normal', 'portrait': 'Paysage', @@ -361,6 +387,9 @@ class fichier_impression: ################################################################################ +# Recuperation de lobjet ldap en lecture ou ecriture de l'adherent ayant le login user +# reprise du backend +# Leve l'erreur ErreurImpression si l'adherent n'existe pas 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) @@ -392,7 +421,7 @@ def utilisateur(user, rw): ################################################################################ - +# Fonction auxilliaire de calcul du cout, reprise directement de l'ancien backend def cout(fic_impr): """ Calcule le pourcentage de couleur sur les pages fic_impr est une instance de fichier_impression